windows - Qt .pro 结合库
问题描述
我有一个子目录 Qt 项目,包括:
- 一个外部(不是我制作的)库
- 使用外部库的内部(由我制作)库
- 使用内部库的应用程序
我在 Windows 上使用 mingw 作为编译器
编译库时我没有任何问题,一切似乎都运行良好。
但是当我编译应用程序时,我得到一个 ld 错误:未定义的外部库函数引用(从内部库函数调用)。
我认为这是因为在编译内部库时没有调用这些方法,因此没有加载,这就是它找不到它们的原因。
编译内部库时,有没有办法组合这两个库(或至少强制编译器/链接器解析符号)?
解决方案
我找到了解决问题的方法。
在我的内部库的 pro 文件中:
- 我将 TARGET 值从 更改
internal_lib
为internal_lib_unlinked
。 - 我添加了一个新行
QMAKE_POST_LINK += ar crsT $$DESTDIR/libinternal_lib.a $$DESTDIR/libinternal_lib_unlinked.a path/to/libexternal_lib.a
这很hacky,但它有效。
推荐阅读
- visual-studio-2017 - Oracle 自定义类向导 Visual Studio 2017
- apache-kafka - Spring Batch + Kafka:KafkaItemReader 永远运行?
- ruby-on-rails - Rails:如何使用 rails app_config 变量作为特征标志,在模型和控制器中设置条件特征
- tensorflow - 谷歌 colab 上的 PYTHONPATH 问题
- python - Dockerfile 构建映像错误:分发包不包含命名空间包的模块或包
- c# - NetTopologySuite.Geometries.MultiPoint 需要有一个 0 args 的构造函数
- swift - AVAudioEngine 输入节点只看到来自连接的聚合音频设备 Swift macOS 的第一个设备输入
- google-bigquery - 无法将数据从 BIg-Query 直接导入 S3
- python - 在 Web 服务器上托管 python 脚本并获取其输出以供进一步使用
- matlab - prepvolume() 的输入参数应该是什么?