一个共享库导出给用户使用的类,符号,函数等都需要使用宏Q_DECL_EXPORT来定义导出,
一个使用共享库的应用程序需要通过定义Q_DECL_IMPORT 导入共享库里的可用对象。
WIN32 平台下的DLL
使用MSVC编译,编译后会生成*.dll 与*.lib 两个文件,.dll 在程序运行时调用,.lib 在应用程序隐式调用动态链接库时使用。
使用MinGW编译,编译后会生成*.a与*.lib两个文件,.a 在程序运行时调用,.lib在在应用程序隐式调用动态链接库时使用。
动态库的调用方式:隐式链接(implicit linking) ,显示链接(explicit linking) .
隐式链接调用编译的应用程序时,用动态库的lib文件(或者.a 文件)以及 h 头文件,知道DLL中有哪些接口类和函数,编译时就隐式地生成必要的链接信息,使用DLL中的类或者函数时根据h头文件中的定义使用即可。
应用程序运行时将自动加载DLL文件。隐式链接调用主要用于同一种类型编程语言(如Qt)生成的代码的共享。
显示链接调用是只有DLL文件,知道DLL里的函数原型,使用QLibrary类对象在应用程序里动态加载DLL文件,并使用DLL里的函数。这种方式需要在应用程序里声明函数原型,并解析DLL里的函数。
显示链接:可以调用其他语言编写的DLL文件,例如:Delphi编写的DLL库文件。