【发布时间】:2019-10-21 22:36:04
【问题描述】:
我正在将一个共享库从 CMake 移植到 QMake(以便更好地与我们的其他代码库集成),并且在 Windows 中让 qmake 同时生成 .lib 和 .dll 文件时遇到了麻烦。 我已将它移植到 Linux 和 MacOS(使用 Unix 共享库格式更容易),但在使用 Windows 时遇到了问题。
请注意,我使用的不是 Mingw 编译器,而是 MSVC 2015 编译器。不幸的是,由于各种原因,我不能使用 Mingw 编译器。
我的 .pro 文件中的相关代码:
Qt -= core gui #not using the qt library
CONFIG += c++14 warn_on
TEMPLATE = lib
TARGET = MyLibrary
使用 CMake,我能够将某些 .h 文件设置为 PUBLIC_HEADER 文件,并且在运行 make install 后,它生成了正确的 .lib 和 .dll 文件。
但是使用 qmake,它只生成了一个非常小的 .dll 文件(CONFIG += static,但这创建了一个包含所有符号的 .lib 文件,而不是我正在寻找的共享库文件。
编辑:在深入研究之后,一个更好的问题可能是: 是否有 CMake 的 PUBLIC_HEADER 属性的 qmake 等效项(或解决方法)?
【问题讨论】:
-
在 Windows 下,默认情况下不会从 DLL 导出任何内容(与 *nix 不同,所有全局变量都是从 .so 导出的)。在构建源代码时,您必须将
dllexport说明符附加到所有导出的类。
标签: c++ windows visual-c++ qmake