请帮助我。
我有一个较早的用qt构建的静态库,它使用Qt库。下一个应用程序可以在 qbs 1.11 版本中进行编译,而不能在新的 qbs 1.12 中进行编译:
Application {
qbsSearchPaths: "path_to_my_modules"
Depends { name: "Qt.widgets" }
Depends { name: "mylibs.mylib" }
files: "main.cpp"
}
在链接步骤中,它会指出多种错误,
undefined reference to `_imp___ZN7QString6appendERKS_'
undefined reference to `_imp___Z18qSetMessagePatternRK7QString'
...等等
模块 mylib 如下:
import qbs
Module {
Depends { name: "cpp" }
cpp.includePaths: path
cpp.staticLibraries: path + "/libmylib.a"
}
是一个错误,还是我需要做一些更正?
尝试分别在Windows 10(64位)和Qt Creator 4.6和4.7 rc上链接旧版本和新版本的qbs。
答案 0 :(得分:1)
这里的问题是qbs无法知道mylib具有Qt依赖性。在以前的版本中,它可能对您不小心起作用了,但这很幸运。 重写模块应该有帮助:
Module {
Depends { name: "Qt.core" } // Or whatever modules mylib uses
Group {
filesAreTargets: true
fileTags: "staticlibrary"
filePath: path + "/libmylib.a"
}
}