当使用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/