0

请帮我。

我之前有一个用 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'

... ETC。

模块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 版本。

4

1 回答 1

1

这里的问题是 qbs 无法知道 mylib 有 Qt 依赖。它可能在以前的版本中意外地为您工作,但这只是运气。重写你的模块应该有帮助:

Module {
    Depends { name: "Qt.core" } // Or whatever modules mylib uses
    Group {
        filesAreTargets: true
        fileTags: "staticlibrary"
        filePath: path + "/libmylib.a"
    }
}
于 2018-07-07T08:15:56.883 回答