0
目前我有一个应用程序和一个(静态)库,都是用Qt编写的。作为构建系统,我使用cmake。我将库与target_link_libraries
链接到可执行文件,一切工作正常(我有一个文件/可执行文件)。在应用程序和cmake中使用Qt共享库的常见方法
但现在我想使用共享库。创建一个共享库add_library
和关键字SHARED
的作品,但我有点困惑的方式,如何加载共享库。我看到了两个 “办法”:
- 写一个库,并使用
Q_DECL_EXPORT
/Q_DECL_IMPORT
。他们使用QLibrary
加载库并使用类型转换来解析所有(C)函数 - 编写库并将头文件包含在应用程序中。共享库通过cmake命令
target_link_libraries
“传递”给可执行文件。他们不使用QLibrary来加载库。
现在我有几个问题:
- 什么是普通(“正常”)的方式来加载共享库?使用__cdecl(方法1)将所有C++方法导出到C函数或包含头文件(方式2)?其他方案?
- 与方式2(包含标题)相关 - 库如何加载?由操作系统?如果我移动库,应用程序无法找到库 - >在运行时加载的库?
- 有没有一种方法来加载一个库,而不包括头或在编译时使用它(运行时加载库)?我看了有一种方法,但它不是那么容易
我希望我的问题是明确的,而不是“noobish”,否则请写一个评论