用于客户端使用的共享库(如应用程序或其他库)中包含的符号——函数、变量或类——必须以特殊方式标记。
这些符号被称为公共符号,它们被导出或公开可见。
其余的符号从外部不应该可见。
Q_DECL_EXPORT:必须添加到编译共享库时使用的符号声明中。
Q_DECL_EXPORT:在编译使用共享库的客户端时,必须将Q_DECL_IMPORT添加到符号声明中。
在QtCreator+Qt的情况下用MinGW编译出来一般有.dll和.a,假如编译出来一个myplunge.dll,那么另外一个.a文件就是libmyplunge.a,这里说明一下,这个.a文件是一个“引入库”文件,就跟VS编译出来的.lib文件一样,请记住:MinGW是不能编译出.lib文件来的。而且,在上一段时间的实践中发现,其实MinGW编译是不需要.a文件,就是说不需要引入库文件,直接在.pro文件引入dll文件就行了。
假设我们要创建一个共享库mysharedlib,
#if defined(MYSHAREDLIB_LIBRARY)
# define MYSHAREDLIB_EXPORT Q_DECL_EXPORT
#else
# define MYSHAREDLIB_EXPORT Q_DECL_IMPORT
#endif
在.pro 文件中添加
DEFINES += MYSHAREDLIB_LIBRARY
在源文件中添加相应的宏定义
MYSHAREDLIB_EXPORT void foo();
class MYSHAREDLIB_EXPORT MyClass...