問題タブ [msvcrt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
msvcrt - Windows での MSVCRT は *nix での glibc (libc) のようなものですか?
MSVCRT (またはそれに相当するもの) にプログラムの実行可能ファイルがバンドルされている Windows プログラムをよく見かけます。典型的な PC では、同じ .DLL のコピーが多数見つかります。私の理解では、MSVCRT は C ランタイム ライブラリであり、*nix の glibc/libc.so に多少似ています。
システム全体で libc を共有するだけでなく、なぜ Windows プログラムは C ライブラリを一緒に持ち込まなければならないのでしょうか?
更新: Shog9 のおかげで、DLL リンケージの問題 (DLL Hell) に目を向ける SxS について読み始めました - http://blogs.msdn.com/b/martynl/archive/2005/10/ 13/480880.aspxは、この問題の便利な紹介です...
c++ - ClickOnce: ユーザーのマシンで MSVCRT C++ DLL を取得する
私は自分のアプリケーション (15 個の C# dll と C++ ランタイム DLL の依存関係を持つ 1 個の C++/CLI dll) を ClickOnce でデプロイするために必死に試みてきました。Release フォルダーをコピーするだけで動作するようになりましたが、ClickOnce はファイル (msvcm80.dll、msvcp80.dll、および msvcr80.dll) のコピーを拒否し、このフォルダーに展開します。
この厄介な回避策を実行しました (msvcm80.dll、msvcp80.dll、および msvcr80.dll を Content/Copy If Newer として提供し、起動時に Microsoft.VC80.CRT フォルダーを作成し、それらの DLL をコピーして、Microsoft.VC80.CRT を作成します。マニフェスト) は機能しているように見えますが、これはすべて私には間違っていると感じています。
何か不足していますか?
windows - Win XP の msvcrt がクラッシュする
常に Windows XP で実行されていたアプリケーションが突然 msvcrt.dll をクラッシュさせる理由を知っている人はいますか?
VC++ 6 の Vista で行われた、スレッド化クラスへのマイナーな変更のみが行われました。
すべてのライブラリを機能させるために、MFC dll に動的にリンクしています。
msvcrt の新しいバージョンでは、問題は解決されません。
何か案は?
visual-c++ - バージョン間に既知の問題がある場合、Windows サイド バイ サイド (winSxS) が自動アップグレードのポリシーをインストールするのはなぜですか?
MSVC 2K5、SP1 (バージョン 762 msvcrt80) を使用してコンパイルされたアプリがあります。
誰かが同じマシン .Net3.0SP1 にインストールするまでは、すべて問題ありません。それとともに、msvcrt80 バージョン 1433 がインストールされ、ポリシーが自動的にアップグレードされます。
現在、いたるところでランダムなクラッシュが発生し、顧客は不満を抱いています。
マニフェスト ファイルを調整して特定のバージョンを強制的に使用できることは理解していますが、自動生成された詳細をコピーして手動で変更するという本当に醜い方法しか見つけられませんでした。これは、修正するアプリが多数ある場合に特に不快です
代わりに、winSxS ディレクトリの愚かな「アップグレード」ポリシーを取り除くことはできますか? 特定のバージョンのみをコンパイルし、マニフェストを自動的に生成するオプション/フラグはありますか?
c++ - VisualStudio_CrtDumpMemoryLeaksは常にオブジェクトダンプをスキップします
CRTメモリリーク検出を使用しようとしていますが、MicrosoftVisualStudioで次のメッセージが表示され続けます。「メモリリークが検出されました-オブジェクトダンプをスキップします。」私はそれを実際に実行してオブジェクトダンプを取得することはできません。
運が悪かったので、メモリリーク検出に関するMicrosoftの記事(http://msdn.microsoft.com/en-us/library/e5ewb1h3(VS.80).aspx )の指示に従いました。
私のstdafx.hには(プロジェクト全体を再構築しました):
私のアプリケーションのエントリポイントには、次のものがあります。
また、ファイル名と行番号がMicrosoftがアドバタイズした形式で表示されることを期待しています。
私はオブジェクトダンプを取得することさえできませんでしたが、他の人がこれらの線に沿って何かを見ていると言っていることに気づきました(_CRTDBG_MAP_ALLOCが定義されていても):
new演算子とdelete演算子のオーバーライドに時間をかけたくないので、CRTデバッグが役立つことを期待していました。これがうまくいかない場合は、new演算子とdelete演算子をオーバーライドしてしまう可能性がありますが、実際には、ファイル名と行番号(指を交差させる)を使用して割り当て情報を取得したいと思います。
ありがとう、キリル
runtime - zlib + マス
msvcrt.dll などのすべての C ランタイム ライブラリがなくても、zlib を masm で使用できますか? もしそうなら、方法を教えてもらえますか?
c++ - プロシージャ エントリ ポイント _wsplitpath_s をダイナミック リンク ライブラリ msvcrt.dll で見つけることができませんでした
最近、.NET アセンブリを含む MFC++ プロジェクトを Visual Studio 2005 から 2008 にアップグレードしました。これをインストールすると、次のメッセージが表示されます。
プロシージャ エントリ ポイント _wsplitpath _s をダイナミック リンク ライブラリ msvcrt.dll に配置できませんでした
Microsoft Visual C++ 2008 SP1 Redistributable Package (x86) をインストールしましたが、まだうまくいきません。また、Google もあまり役に立ちませんでした。
windows - メモリ割り当て解除ルーチンは、解放されるブロックに影響しますか?
Windows HeapFree、msvcrt free: 解放されるメモリがページインされますか? 終了時にメモリを解放しないと、アプリケーションのシャットダウンが大幅に高速化されるかどうかを推定しようとしています。
注: これは非常に具体的な技術的な質問です。アプリケーションが終了時に呼び出す必要があるかどうかではありませんfree
。
c - VC で main() ルーチンに入る前にコードを実行する方法は?
私は Microsoft の CRT ソース コードを読んでおり、main() ルーチンの前に関数 __initstdio1 が実行される次のコードを思いつくことができます。
問題は、VC (VC++ コードではなく) で main() ルーチンに入る前にコードを実行する方法です。
出力は次のようになります。
ただし、コードを理解できません。
.CRT$XIC でいくつかのグーグルを実行しましたが、運がありません。専門家が上記のコード セグメント、特に以下について説明してくれませんか。
- この行
_CRTALLOC(".CRT$XIC") static pinit = __initstdio1;
はどういう意味ですか? 変数 pinit の意味は何ですか? - コンパイル中に、コンパイラ (cl.exe) は次のような警告をスローします。
Microsoft (R) 32 ビット C/C++ 最適化コンパイラ バージョン 15.00.30729.01 for 80x86 Copyright (C) Microsoft Corporation. 全著作権所有。
警告メッセージを削除するには、どのような修正アクションを実行する必要がありますか?
前もって感謝します。
追加した:
コードを変更し、_PIFV として pinit に型を指定しました。これで、警告メッセージはなくなりました。
新しいコードは次のとおりです。