windows 中的 Qt 共享库,未生成 .lib 文件
Qt shared library in windows, not generating .lib file
我有一个简单的 class(来自 Qt 示例的模拟时钟),我想将其作为编译到共享库中的测试。所以我最终想要的是有一个 .dll 文件和一个 .lib 文件。
我所做的只是创建一个新项目,添加模拟时钟头文件和源文件,然后在pro文件中配置TEMPLATE = lib
。
然而这只会创建一个 .dll 文件,我在 docs 上找到的文章不是很有帮助。
有谁知道我该如何解决这个问题,并最终得到 dll 和 lib 文件?
编辑 1
完成后
#if defined(TEST)
#define AnalogClockPlug Q_DECL_EXPORT
#else
#define AnalogClockPlug Q_DECL_IMPORT
#endif
然后简单地在我的主 class 前面添加 AnalogClockPlug 并在我的 pro 文件中 定义 TEST,生成 qt一个 lib 文件。
但我不确定我是否理解确切的原因,或者即使它是正确的。
要制作静态库,您还需要添加
CONFIG+= staticlib
到 .pro 文件
Q_DECL_EXPORT 与 __declspec(dllexport) pragma 相同(在 Windows 下)。它使您的 class 的所有方法都转到 dll 'exports' table(dll 二进制文件中的一个特殊部分)。
Lib 实用程序只读取 dll 导出,并生成所谓的 'the import library' - 它不像通常的静态库,包含实际代码,而只是一堆记录表明 'such procedure name' 是在 'such dll name'.
中找到
如果您没有该编译指示,则您的 dll 导出 table 为空,并且 lib 实用程序拒绝输出空的 lib 文件。就这些了。
我有一个简单的 class(来自 Qt 示例的模拟时钟),我想将其作为编译到共享库中的测试。所以我最终想要的是有一个 .dll 文件和一个 .lib 文件。
我所做的只是创建一个新项目,添加模拟时钟头文件和源文件,然后在pro文件中配置TEMPLATE = lib
。
然而这只会创建一个 .dll 文件,我在 docs 上找到的文章不是很有帮助。
有谁知道我该如何解决这个问题,并最终得到 dll 和 lib 文件?
编辑 1
完成后
#if defined(TEST)
#define AnalogClockPlug Q_DECL_EXPORT
#else
#define AnalogClockPlug Q_DECL_IMPORT
#endif
然后简单地在我的主 class 前面添加 AnalogClockPlug 并在我的 pro 文件中 定义 TEST,生成 qt一个 lib 文件。
但我不确定我是否理解确切的原因,或者即使它是正确的。
要制作静态库,您还需要添加
CONFIG+= staticlib
到 .pro 文件
Q_DECL_EXPORT 与 __declspec(dllexport) pragma 相同(在 Windows 下)。它使您的 class 的所有方法都转到 dll 'exports' table(dll 二进制文件中的一个特殊部分)。
Lib 实用程序只读取 dll 导出,并生成所谓的 'the import library' - 它不像通常的静态库,包含实际代码,而只是一堆记录表明 'such procedure name' 是在 'such dll name'.
中找到如果您没有该编译指示,则您的 dll 导出 table 为空,并且 lib 实用程序拒绝输出空的 lib 文件。就这些了。