使用 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。
答案 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。