問題タブ [cl]
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.
c++ - cl.exeの組み込みマクロを見つける方法
cl.exeの組み込み/事前定義されたマクロを見つける方法を知っている人はいますか?たとえば、gccの場合、次のコマンドラインにコンパイラの組み込みマクロがすべて一覧表示されます。
編集:「実際のコンパイラに尋ねる」というgccに似た方法に興味があります。
ありがとう
c++ - Windows 7 64 ビット Visual Studio 2013 上のネイティブ cl.exe
Visual Studio 2013 のどのエディションのネイティブ 64 ビットcl.exe
( amd64
1 ではなくx86_amd64
) が必要ですか? Visual Studio 2013 Express (Windows デスクトップ開発) で Windows 7 64 ビットを実行しています。
c++ - NMAKE を使用した VC++ DLL のコンパイル
Visual Studio 2005 を使用してコンパイルした DLL ファイルがあり、C# プログラムからこれらの関数 (DLL 内) を呼び出すと、完全に機能します。しかし、同じプログラムを NMAKE を使用してコンパイルすると、正常にコンパイルされますが、C# プログラムでは動作しません。「DLL NOT FOUND EXCEPTION」または「DLL IS CORRUPT」が表示されます。
PS: 元のプロジェクト ファイルからすべてのコンパイラ オプションとリンカー オプションをコピーし、それをMakeFileで使用しましたが、まだ役に立ちません。ここで何が欠けていますか?
コンパイラとリンカーのオプションは次のとおりです。
編集: dumpbinを使用すると、「HEADERS」、「EXPORTS」、「SYMBOLS」のサイズはすべて、Visual Studio を使用してコンパイルされた DLL よりも NMAKE を使用してコンパイルされた DLL の方が小さくなります。
c - /c および /MD オプションを使用して C ファイルをコンパイルし、.lib ファイルをリンクする
3 ~ 4 個の外部ライブラリを使用する C ファイルがあります。cl.exe
and link.exe
(MSVC)を使用して構築されています。
ビルド スクリプトは、exe を生成するプロセスが 2 つの段階にあることを示しています。
cl.exe
ファイルを取得するには、「/c」オプションを使用し.o
ます。これには他にもたくさんのフラグが付けられていますが、私が関心を持っているのは/MD
. MSDN は次のように述べています。
アプリケーションがランタイム ライブラリのマルチスレッド固有および DLL 固有のバージョンを使用するようにします。_MT と _DLL を定義し、コンパイラがライブラリ名 MSVCRT.lib を .obj ファイルに配置するようにします。
コンパイルするだけで、リンクしていない場合、/MD
withを与えることの用途は何ですか?cl
この後
link.exe
、exeを生成するために使用されます。リンク用にいくつかの.lib
ファイルが指定されています (ole32.lib、advapi32.lib、user32.lib など、およびその他の非 MSVC 固有のものなど)。私の質問は.lib
、静的リンクに使用されるファイルではないということですか? はいの場合、最終的な exe が約 500 KB しかないのはなぜですか? のいずれ.lib
もインポート ライブラリではありません。そうでない場合、
link
デフォルトで静的または動的リンクを使用しますか?/MD
指定された withcl
はここで効果がありますか?
c++ - 明らかに正しくない C++ コードが cl.exe コンパイラによって受け入れられました
次の C++ コードが Visual Studio 2012 の Microsoft cl.exe コンパイラで受け入れられるのはなぜですか?
明らかな間違いのように見えますが、上記のコードはコンパイル可能です。ただし、次のコードは正しく拒否されることに注意してください。
c++ - 未使用の変数と関数のリンカエラー
次のテストプログラムを作成しました
ご覧のとおり、このプログラムは何もしていません。ただし、コンパイル中に、これらがエントリポイント関数から参照されないという事実にもかかわらず、globalvar
およびのリンカーエラーに直面しました。Windows(を使用)とLinux(を使用)の両方で問題に直面しました。int proc1()
main
cl
gcc
この参照されていないグローバル変数と関数をエントリ ポイント (cl、gcc、clang) からリンクしないようにコンパイラ/リンカーに指示する方法はありますか?
Windows での正確なエラー メッセージ:
command - as400 crtcmd コマンドがライブラリに作成されていません
私は独自のコマンドを作成していますが、これまでのところ、.cmd コードを処理する cl コードは単独で問題なく動作しています。私はそれを呼び出してパラメーターを送信することができ、それはまさに必要なことを行うので、エラーは .cmd にあるに違いないと仮定しています:
実行crtcmd
して適切なファイル名を指定すると、「Command DSPSYSLVL not created in library [library name]」というメッセージが表示されます。CPF0201 メッセージで。
私はまだシステム全体にかなり慣れていないので、何が問題なのか本当にわかりません。ジョブログも新しい情報を提供しません...