2011-09-07 74 views
3

我需要編譯一個現有的C++庫作爲一個lib和一個DLL,然後在不同的應用程序中使用靜態和動態庫。我使用VS2010。編譯一個C++庫作爲一個靜態庫和動態DLL與VS

我不能做的是編輯所有的頭文件,以便添加__declspec(dllexport)指令導出,因爲庫必須保持原樣。

在Mac下,我能夠毫無問題地編譯和使用dylib,但我知道VS在這方面缺乏。

在VS中,爲了讓函數「導出」(即在編譯時從應用程序可鏈接),首先編譯一個靜態庫,然後編譯一個dll是可行的?換句話說,我可以像使用__declspec(dllexport)生成的導出庫一樣使用靜態庫嗎? 有更好的解決方法嗎?

回答

2

我需要將現有的C++庫編譯爲lib和dll,然後在不同的應用程序中使用靜態和動態庫。我在 使用VS2010。

爲此創建配置。例如發行LIB,釋放DLL等

什麼我不能做的是編輯,以添加 __declspec(dllexport)的指令輸出,作爲庫必須是所有頭文件 保持爲它是。

只需將模塊定義文件(* .def)添加到導出函數列表即可。

換句話說,我可以使用靜態庫,就好像是用__declspec(dllexport)的產生的出口LIB ?

不,這些庫是不同的。當你建立一個DLL時,你會得到一個二進制文件和一個lib文件。

+0

謝謝Sergius。 .def文件是VS可以生成的東西,還是我必須手動創建?該庫包含許多功能... – step

+0

AFAIK VS只能生成空的.def文件。 –

相關問題