2015-09-25 27 views
0

我想使用VC++的一個版本,例如, VC++2003,爲我的客戶製作一個DLL。如何爲不同的VC編譯器製作DLL

他們可能使用VC++2005, VC++2008Express, VC++2010Pro,...,他們可能會使用調試設置和發佈設置來編譯他們的項目。

我可以只爲此目的製作一個DLL,還是我必須製作幾個對應所有這些可能性的DLL?

+1

如果你堅持一個純粹的C接口(或COM,如果你喜歡的話),使用它只是一個版本非常簡單。 –

+0

您可以製作一個'.DLL'文件,該文件僅導出不使用任​​何依賴於編譯器的類型/約定/功能的扁平化C風格函數。還有一個用於C/C++編譯器的'.H'文件。然後,每個編譯器都有自己的方法,根據需要將DLL導入到項目中,無論是通過創建編譯器特定的導入LIB文件,還是提供特定的代碼語法來直接加載/訪問DLL函數。或者,用戶可以簡單地調用Win32'LoadLibrary()'和'GetProcAddress()'函數(或利用其編譯器的延遲加載功能自動調用這些函數)。 –

+0

調試構建和發佈如何構建?我必須提供調試版本.dll和發行版本.dll嗎? – JoeChou

回答

0

我只是創建了2個DLL項目。一個用於發佈版本,一個用於調試版本。這兩個項目使用多字節字符集。 爲了測試,我使用Unicode字符集創建了一個EXE項目。 EXE項目的調試和發佈版本鏈接到這兩個DLL沒有問題。

這不是我已經知道的。我必須更新我學到的東西。

順便說一下,我使用VC++ 2012 Express來測試上述情況。