推动Qt qglobal.h的版本

时间:2014-10-21 16:19:41

标签: c++ qt boost shared-libraries qtcore

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

#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。

1 个答案:

答案 0 :(得分:2)

虽然你的代码片段似乎并不完整,因为这对于一个稳定的库来说还不够定义,但似乎也可以通过几乎应用逐个映射来提升,即只是不同的名称:< / p>

...
#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
...

请注意,它还包含我上面提到的其他逻辑;没有它,它实际上不是一个完整的跨平台解决方案。有关详细信息,请参阅增强文档here