2017-01-11 22 views
0

我正在用Visual Studio 2015構建一個C++ DLL,並且我想在沒有Visual Studio開發環境的情況下將調試版本部署到另一個(內部,而非客戶)機器,這意味着我必須靜態鏈接到MSVCRT(鏈接器選項'/ MTd')。我的項目依賴於一個靜態庫foo.lib(調試版本),它似乎是用'/ MDd'構建的,並且在鏈接時預計會拋出:我可以在我鏈接到我的DLL項目的靜態庫中覆蓋'MDd_DynamicDebug'嗎?

「foo.lib(bar.obj):error LNK2038: 'RuntimeLibrary'檢測到不匹配:值'MDd_DynamicDebug'與dllmain.obj中的'MTd_StaticDebug'值不匹配「

有什麼辦法可以覆蓋這個並強制'/ MTd'?

+0

您是否有foo.lib的源代碼?如果是這樣,只需使用/ MTd來構建它。如果不是的話,我認爲你已經被洗淨了。 –

回答

0

如果你有你的外部lib源代碼,那麼你可以簡單地使用/MTd編譯器開關重建它。如果沒有可用的源,則無法強制使用不同的運行時使用模型。如果您嘗試爲需要遠程調試客戶端計算機上的某些問題而需要分發非發佈版本,則可以部署發佈版本,但要禁用優化,啓用運行時檢查,調試信息等。只要您未採取措施標準庫元素,調試應該工作得很好。

相關問題