2014-11-14 74 views
1

我下載並編譯了pdcurses。從他們的文檔要求我使用:無法將pdcurses靜態調試版本與VS2013鏈接

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)" ([email protected]@[email protected]) 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)" ([email protected]@[email protected]) 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 

任何想法問題可能是什麼?

回答

0

您正在鏈接到調試和發佈靜態運行時,不這樣做。如果您不知道哪些庫導致問題,請參閱this guide以瞭解檢測該問題的步驟。

+0

是的,這似乎是問題,但我不這樣做。至少不是故意的。我在調試運行時構建pdcurses,然後與MTd鏈接。有什麼問題? – TheCrafter 2014-11-14 17:51:28