2011-12-14 80 views
1

我得到了C++/CLI的dll鏈接到VC++的dll,但鏈路與VC++的靜態版本嘗試它,當LIB有一堆連接的錯誤。我想使用靜態,所以我不必將所有其他vC++ dll文件複製到我的主c#項目中,該項目使用C++/cli dll。是有可能的C++/CLI DLL使用靜態VC++的lib

在VC++庫具有以下特性:
*內置VS2008
*靜態庫
*使用MFC靜態庫
*沒有公共語言運行庫支持

的C++/CLI圖書館這些屬性:
*內置VS2010
*動態庫
*共享DLL
*公共語言運行庫支持
0使用MFC的*鏈接器 - >輸入包含vC++ lib文件

我嘗試在vs2010中構建它後鏈接vC++ lib,但這並沒有幫助。

所以我得到這樣從nafxcwd.lib像這樣的90個LNK2005錯誤:

1> nafxcwd.lib(dlgprop.obj):錯誤LNK2005:「市民:結構_PROPSHEETPAGEA & __thiscall的CPropertyPage :: GetPSP(無效) (?GetPSP @ @@的CPropertyPage @@ QAEAAU_PROPSHEETPAGEA XZ)「在mfc100d.lib已定義(mfc100d.dll)

然後像30左右的這些: 1> libcmtd.lib(sprintf.obj):錯誤LNK2005 :在MSVCRTD.LIB已經定義_sprintf(MSVCR100D.dll)

然後是三個LNK4098警告:

LINK:警告LNK4098:defaultlib 'MSVCRTD.LIB' 與其他使用林達衝突;使用/ NODEFAULTLIB:library 1> LINK:警告LNK4098:defaultlib'nafxcwd.lib'與使用其他庫相沖突;使用/ NODEFAULTLIB:庫 1> LINK:警告LNK4098:defaultlib'libcmtd.lib'與使用其他庫相沖突;使用/ NODEFAULTLIB:庫

然後我得到這個最後一個錯誤: libcmtd.lib(crt0.obj):錯誤LNK2019:解析外部符號主函數引用_ _tmainCRTStartup

我擡頭的LNK4098警告在msdn上,解決方案是將衝突的庫添加到鏈接器輸入設置中的IgnoreSpecific Default庫條目中,但這沒有幫助。

謝謝
亞歷

+0

試試這個:http://stackoverflow.com/questions/5127522/how-do-i-make-a-static-library-release-debug-independent-in-vs2010-express in your's that'libcmtd .lib' – fazo 2011-12-14 18:14:16

回答

2

可以圖書館建立與不同版本的編譯器VS不鏈接(C++)(有時也可能意外地似乎工作,但你通常會得到難以後來診斷故障)。此外,您的錯誤似乎是選擇不同CRT配置(單/多線程,調試/釋放等)的典型。