gpt4 book ai didi

c++ - 将dll编译为静态库时如何处理DLL_EXPORT?

转载 作者:可可西里 更新时间:2023-11-01 14:41:32 27 4
gpt4 key购买 nike

我在 Visual C++ 2010 中有一个项目,其中包含关键头文件中的预处理器指令。其实就是ZMQ源码。

项目通常配置为dll,所以header使用了DLL_EXPORT的状态(defined/not defined)。如果项目用于编译 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 可以识别的符号,对应于静态库设置?基本上,我想通过扩展上面代码片段中使用的方法来处理静态库的编译和使用。

最佳答案

我只想介绍第二个(可选的)宏,类似于 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

在将库构建为静态库或将其作为静态库使用时定义所述宏。

关于c++ - 将dll编译为静态库时如何处理DLL_EXPORT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6259022/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com