mah*_*nya 3 c++ windows static-libraries dllexport
我在visual c ++ 2010中有一个项目,它包含一个密钥头文件中的预处理程序指令.实际上,它是ZMQ源代码.
项目通常配置为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
Run Code Online (Sandbox Code Playgroud)
但是,这不支持我正在构建静态库的设置.因此,我必须手动修改标题.Visual Studio似乎认识到dll项目设置并相应地处理dll_export的定义.是否有一个被visual studio识别的符号,它对应于静态库设置?基本上,我想通过扩展上面代码片段中使用的方法来处理静态库编译和使用.
我只想介绍第二个(可选)宏,例如ZMQ_STATIC:
#if defined(ZMQ_STATIC)
# define ZMQ_EXPORT
#elif defined(DLL_EXPORT)
# define ZMQ_EXPORT __declspec(dllexport)
#else
# define ZMQ_EXPORT __declspec(dllimport)
#endif
Run Code Online (Sandbox Code Playgroud)
在将库构建为静态库或将其作为静态库使用时,定义所述宏.