我在visual C++ 2010中有一個項目,其中包含關鍵頭文件中的預處理器指令。實際上,它是ZMQ源代碼。如何在編譯DLL到靜態庫時處理DLL_EXPORT?
該項目通常配置爲一個DLL,所以頭使用DLL_EXPORT的狀態(定義/未定義)。如果該項目被用來編譯一個dll,頭部可以通過這兩個DLL項目或客戶端代碼中使用,由於從zmq.h採取以下設置:
#if defined _WIN32
# if defined DLL_EXPORT
# define ZMQ_EXPORT __declspec(dllexport)
# else
# define ZMQ_EXPORT __declspec(dllimport)
# endif
然而,這不支持設置我正在建立一個靜態庫。因此我必須手動修改頭部。 Visual Studio似乎認識到dll項目設置並相應地處理dll_export的定義。有沒有一個符號被視覺工作室認可,對應於靜態庫設置?基本上,我想通過擴展上面代碼片段中使用的方法來處理靜態庫的編譯和使用。
我認爲這不會有幫助; Visual Studio只需要在'_declspec(dllimport)'(用於鏈接到MSVC * .DLL)和空白(用於鏈接到靜態CRT)之間切換。 – Neil 2011-06-06 23:37:04