1

pdcurses をダウンロードしてコンパイルしました。私が使用したドキュメントから指示されたように:

nmake -f vcwin32.mak DEBUG=Y pdcurses.lib

また、DEBUG タグなしで pdcurses をビルドして、リリース モードにできるようにします。

今、pdcurses を静的にリンクしたいプロジェクトがあります。MT と MTd をランタイム ライブラリとして使用し、デバッグ時には DEBUG ビルドの .lib ファイルをリンクし、リリース時には他の .lib ファイルをリンクします。

リリース モードでプロジェクトをビルドするとすべて正常に動作しますが、デバッグでビルドしようとすると次のエラーが表示されます。

1>LIBCMT.lib(invarg.obj) : error LNK2005: "void __cdecl _invalid_parameter(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invalid_parameter@@YAXPBG00II@Z) already defined in LIBCMTD.lib(invarg.obj)
1>LIBCMT.lib(invarg.obj) : error LNK2005: "void __cdecl _invoke_watson(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invoke_watson@@YAXPBG00II@Z) already defined in LIBCMTD.lib(invarg.obj)
1>LIBCMT.lib(invarg.obj) : error LNK2005: __call_reportfault already defined in LIBCMTD.lib(invarg.obj)
1>LIBCMT.lib(invarg.obj) : error LNK2005: __get_invalid_parameter_handler already defined in LIBCMTD.lib(invarg.obj)
1>LIBCMT.lib(invarg.obj) : error LNK2005: __initp_misc_invarg already defined in LIBCMTD.lib(invarg.obj)
1>LIBCMT.lib(invarg.obj) : error LNK2005: __invalid_parameter already defined in LIBCMTD.lib(invarg.obj)
1>LIBCMT.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in LIBCMTD.lib(invarg.obj)
1>LIBCMT.lib(invarg.obj) : error LNK2005: __set_invalid_parameter_handler already defined in LIBCMTD.lib(invarg.obj)
1>LIBCMT.lib(invarg.obj) : error LNK2005: ___pInvalidArgHandler already defined in LIBCMTD.lib(invarg.obj)
1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library

問題が何であるかについてのアイデアはありますか?

4

1 に答える 1

0

デバッグとリリースの両方の静的ランタイムにリンクしていますが、そうしないでください。どのライブラリが問題を引き起こしているかわからない場合は、このガイドを参照して、それを検出する手順を確認してください。

于 2014-11-14T17:47:46.227 に答える