c++ - Qt qglobal.h 的 Boost 版本

标签 c++ qt boost shared-libraries qtcore

当使用Qt Creator创建库时,它会自动生成一个全局 header ,在其中定义导出符号宏。这是示例代码:

#ifndef LIB_GLOBAL_HPP
#define LIB_GLOBAL_HPP

#include <QtCore/qglobal.h>

#if defined(LIB)
#  define LIB_SHARED_EXPORT Q_DECL_EXPORT
#else
#  define LIB_SHARED_EXPORT Q_DECL_IMPORT
#endif

#endif // LIB_GLOBAL_HPP

仅使用 Boost 库是否可以实现相同的平台独立性? 我想在不依赖 Qt 库的情况下使用 Qt Creator。

最佳答案

虽然您的代码片段似乎并不完整,因为这对于稳定的库来说还不够定义,但这似乎也可以通过 boost 实现,几乎可以应用一对一映射,即只是不同的名称:

...
#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FOO_DYN_LINK)
# if defined(BOOST_FOO_SOURCE)
#   define BOOST_FOO_DECL BOOST_SYMBOL_EXPORT
# else
#   define BOOST_FOO_DECL BOOST_SYMBOL_IMPORT
# endif
#else
# define BOOST_FOO_DECL
#endif
...

请注意,它还包含我上面提到的附加逻辑;如果没有它,它就不是一个真正完整的跨平台解决方案。更多详情请引用boost文档here .

关于c++ - Qt qglobal.h 的 Boost 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26491498/

相关文章:

c++ - 在ARM Zynq(裸机)上使用Eigen C++库

C++ lambda 表达式

c++ - 将 vs printf 放在以下代码中?

c++ - 为什么我需要在转换构造函数上引用 this->?

c++ - FFmpeg 原生 AAC 解码器

c++ - Qt 接口(interface)类

c++ - 如何给QListWidget分配一个特定的数字,以便以后修改?

c++ - 如何播放 amr 音频,QMediaPlayer 不支持?

使用语言环境时 C++ boost 崩溃

c++ - 如何确保我们从 boost::child 进程中读取所有行