我有一个在我的 Qt 应用程序中使用的第三方预编译库 (.lib+.dll)。
在常规(qmake)QtCreator 项目中,我的 .pro 文件中有以下几行:
LIBS += -L$$PWD/lib/release -ltag
INCLUDEPATH += include/taglib
Projects 选项卡中还有一个选项 -> Run -> “Add build library search path to PATH”,默认为 ON。它确保 LIBS 路径被添加到系统 PATH 中,因此可以找到 dll。
但是,我在 QBS 中找不到等价物。我有以下 qbs 文件,然后通过 Depends 在我的 CppApplication 文件中包含和添加该文件:
DynamicLibrary {
name: "taglib"
files: "lib/release/tag.dll"
Export {
Depends { name: "cpp" }
cpp.includePaths: [".","include/taglib"]
cpp.libraryPaths: ["lib/release"]
cpp.dynamicLibraries: "tag"
}
Group {
name: "taglib"
fileTagsFilter: ["dynamicLibrary"]
qbs.install: true
}
}
链接器通过,但应用程序在运行时找不到 DLL 并崩溃。是否可以在运行时将 cpp.libraryPaths 添加到系统 PATH?
另一种选择是将 DLL 文件复制到构建目录,但我不知道如何为 QBS 中的预编译库执行此操作。
编辑:我尝试使用此处记录的 cpp.systemRunPaths但它不起作用。