我想在Visual Studio 2008中編譯和鏈接我的項目作爲調試項目(MTd)。該項目包括幾個外部dll,其中一個dll與非調試版本(MD和MT版本)一樣。現在,如果我試圖鏈接我的項目,它要麼重新聲明LIBCMT.lib和LIBCMTD.lib中的東西,要麼我試圖不允許非調試版本(/ NODEFAULTLIB:LIBCMT)它缺少符號。Visual Studio C++ - 鏈接LIBCMT.lib和LIBCMTD.lib(調試版本)
現在我可以使用所有外部庫的MT版本,但我仍然無法編譯&鏈接它爲MTd版本來調試我的項目,因爲相同的錯誤。
另一種方法(在我看來)將允許重新定義,我認爲是可能的@ gnu編譯器/鏈接器,但我無法找到任何關於Visual Studio的C++的東西。
有關如何處理此問題的任何想法? (請記住:不可能將外部dll編譯爲debug-dll)
作爲一個額外的一般問題:是否可以創建一個使用非調試dll的調試項目?
您正試圖在您的程序中故意使用*多個*版本的CRT。你會得到一個用於你的EXE,另一個用於你的DLL,可能更多。這是非常非常不明智的,你在傳遞對象和指針時會遇到主要問題。一直使用/ MD,因此程序中只有一個CRT。 –
是的,這是不明智和必要的......因爲我需要一個可調試的項目,並且只有一些外部DLL的發佈版本。對於發佈版本,它始終是一致的。 –
您需要與在這些DLL上工作的程序員交談。當然,他們可以爲您提供調試版本。你不可能在這裏找到他們。 –