我在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