2012-04-27 142 views
0

我有一個openCv應用程序,它可以在爲代碼生成屬性使用Mutithreaded Debug Dll選項時正常生成和運行。不過,我想不過來運行的任何計算機上的應用程序,構建在多線程調試模式中失敗給LNK 2005個錯誤,有些例子是在VS2010中構建Opencv2.1應用程序

1> msvcprtd.lib(MSVCP100D.dll):錯誤LNK2005:「公共:__thiscall 的std :: _ LOCKIT ::〜_Lockit(無效)」(?? 1_Lockit @ @@ STD QAE @ XZ)已經定義 在libcpmtd.lib(xlock.obj)

1> msvcprtd.lib( MSVCP100D.dll):錯誤LNK2005:「public:__thiscall std :: _ Lockit :: _ Lockit(int)」(?? 0_Lockit @ std @@ QAE @ H @ Z)已在libcpmtd.lib(xlock.obj)中定義

1> msvcprtd.lib(MSVCP100D.dll):error LNK2005:「void __cdecl std :: _ Debug_message(wchar_t const *,wchar_t const *,unsigned int)」 (?_Debug_message @ std @@ YAXPB_W0I @ Z)已經在 libcpmtd.lib(stdthrow.obj)定義

1> msvcprtd.lib(MSVCP100D.dll):錯誤LNK2005: 「公共:__thiscall 的std :: _ Container_base12 ::〜_Container_base12(無效)」 (?? 1_Container_base12 @ @@ STD QAE @ XZ)在opencv2.obj已經定義

1> MSVCRTD.LIB(MSVCR100D.dll):錯誤LNK2005:「公共:__thiscall 的std ::例外::異常(類的std ::異常常量&) 「 (?? 0exception @ @@ STD QAE @ @@ ABV01 Z)在 LIBCMTD.lib(stdexcpt.obj)已經定義

1> msvcprtd.lib(MSVCP100D.dll):錯誤LNK2005:」市民:無效 __thiscall的std :: _ Container_base12 :: _ Orphan_all(無效)」(_Orphan_all @ _Container_base12 @性病@@ QAEXXZ?)在 opencv2.obj

1> MSVCRTD.LIB(MSVCR100D.dll)已經定義錯誤LNK2005:__invalid_parameter 在LIBCMTD.lib(invarg.obj)已經定義

1> MSVCRTD.LIB(MSVCR100D.dll):錯誤LNK2005:__CrtDbgReportW已經 在LIBCMTD.lib(dbgrptw.obj)定義

1> MSVCRTD.LIB(MSVCR100D.dll):錯誤LNK2005: 「公共:__thiscall 的std ::例外::異常(字符常量* const的&)」 (?? 0exception @ @@ STD QAE @ ABQBD @ Z)在 LIBCMTD.lib(stdexcpt.obj)

1> MSVCRTD.LIB(MSVCR100D.dll)已經定義:錯誤LNK2005:「公共:虛擬 __thiscall std :: exception ::〜exception(void)「(?? 1exception @ std @@ UAE @ XZ)已在 中定義LIBCMTD.lib(stdexcpt.obj)

1> MSVCRTD的.lib(MSVCR100D.dll):錯誤LNK2005:_fclose已經在LIBCMTD.lib(fclose.obj)定義

1> MSVCRTD.LIB(MSVCR100D.dll):錯誤LNK2005:_fprintf已經在LIBCMTD.lib定義 (fprintf.obj)

1> MSVCRTD.lib(MSVCR100D.dll):錯誤LNK2005:_fopen已經在LIBCMTD.lib中定義了 (fopen。OBJ)

1> MSVCRTD.LIB(MSVCR100D.dll):錯誤LNK2005:_memmove已經在LIBCMTD.lib定義 (memmove.obj)

1> MSVCRTD.LIB(MSVCR100D.dll):錯誤LNK2005 :_free已定義在 LIBCMTD.lib(dbgfree.obj)

任何建議,將不勝感激。我真的被困在這裏,有較小的程序沒有問題

感謝

PS我也用的功能從cvBlobslib和LIBSVM代碼,但如果你改變使用/MT它不應該成爲問題

+0

[OpenCV 2.3 C++ Visual Studio 2010]的可能重複(http://stackoverflow.com/questions/7011238/opencv-2-3-c-visual-studio-2010) – karlphillip 2012-04-27 12:39:38

回答

1

/MTd,那麼所有依賴庫也需要用這些設置進行編譯。

如果情況並非如此,那麼這些依賴關係需要鏈接到動態CRT,並且您的項目嘗試鏈接到靜態CRT,導致您看到的「已定義」錯誤。

相關問題