4

Visual Studio 2008 で自分のプロジェクトをデバッグ プロジェクト (MTd) としてコンパイルおよびリンクしたいと考えています。このプロジェクトには、いくつかの外部 dll が含まれており、これらの dll の 1 つは、利用可能な非デバッグ バージョン (MD および MT バージョン) と同様です。プロジェクトをリンクしようとすると、LIBCMT.lib および LIBCMTD.lib 内のものの再宣言が表示されるか、非デバッグ バージョン (/NODEFAULTLIB:LIBCMT) を許可しないようにすると、シンボルが見つかりません。

これで、すべての外部ライブラリの MT バージョンを使用できるようになりましたが、同じエラーのため、プロジェクトをデバッグするために MTd バージョンとしてコンパイルおよびリンクすることはできません。

別の方法 (私の意見では) は、gnu コンパイラ/リンカーで可能だと思われる再定義を許可することですが、Visual Studio の C++ ではこれについて何も見つかりませんでした。

この問題を処理する方法についてのアイデアはありますか? (覚えておいてください: 外部 dll を debug-dll としてコンパイルすることはできません)

追加の一般的な質問として: 非デバッグ DLL を使用するデバッグ プロジェクトを作成することは可能ですか?

4

1 に答える 1

4

「正しい」解決策は、すべての外部ライブラリを同じパラメーター (MTd) で再構築することです。私が言ったように、これは不可能です。デフォルトライブラリを無視しないことで問題を解決しました。代わりに、探していたパラメーターを見つけました。リンカー オプションで - 私が追加した追加の行: /FORCE- シンボルの再定義を無視します。これは完全な解決策ではなく、どのプロジェクトでもうまくいかない可能性がありますが、何もしないよりはましです...

さらに、インクリメンタル リンクを NO に設定する必要がありました。そうしないと、embed.manifest が正しくビルドされません (ただし、これはウイルス対策の問題である可能性があると読みました)。

于 2013-08-07T08:39:34.973 に答える