2010-02-05 99 views
0

我正在開發一個使用第三方dll和庫的項目。我想用靜態CRT(LIBCMTD)構建我的項目,因爲我希望在「IBM purifier」中運行我的應用程序。但是,第三方庫是使用動態CRT(MSVCRT)構建的。StaticCRT(LIBCMT(D))和DynamicCRT(MSVCRT(D))衝突

這使聯誤差爲: MSVCRTD.LIB(MSVCR80D.dll):錯誤LNK2005:__mktime64在LIBCMTD.lib(mktime64.obj)MSVCRTD.LIB(MSVCR80D.dll)已經定義:誤差LNK2005:__gmtime64已經定義在LIBCMTD.lib(gmtime64.obj)MSVCRTD.lib(MSVCR80D.dll)中:錯誤LNK2005:__localtime64已在LIBCMTD.lib中定義(loctim64.obj)

我嘗試了各種鏈接器設置。此外,我給/ FORCE:MULTIPLE連接器命令行忽略多個定義並創建一個構建。它這樣做了,但我的應用程序不能運行在淨化器中。

有沒有一種很好的方法來做我想要達到的目標?我無法控制第三方源代碼來控制其設置。

感謝

回答

1

如果需要只使用靜態庫構建,你可能會大清洗 - 他們的DLL已經配置動態鏈接到標準庫,並沒有什麼你在建築物的其他部分做該項目將改變這種情況(除非您可以讓該供應商提供靜態鏈接到標準庫的版本)。