0

我有一个基于 Qt .pro 文件的构建环境,该文件转换为 Visual Studio 2008 解决方案和 Makefiles(由 nmake 使用)。大约有 30 个项目,直到最近都编译成一个单独的 dll(主要编译成一个 exe)。

最近我添加了一个配置为静态库的项目。Visual Studio 链接一切都很好。nmake 对该静态库中使用的每个符号都有未解析的外部。

Makefile 中的项目序列是好的 Qt 的依赖是好的

使用:Visual Studio 2008 Qt Visual Studio 集成 1.4.3 Qt 4.5.2

有什么建议么?所有日志组合或任何有用的选择都太大而无法发布。

4

1 回答 1

0

在解析 LIBS 变量时,对于每个条目 -l qmake 都会查看该文件是否存在于 libpath 中。如果它可以找到它,它会添加一个到 Makefile 的绝对链接,如果不是它只是添加文件名并让 nmake 自己查找它。

我有 2 个条目:-lmystatic 和 -lmystatic2。我第一次生成我的 Makefile 时,它​​写道:

LIBS = ... mystatic.lib mystatic2.lib ...

如果我重新生成我的 Makefile,它应该写:

LIBS = c:\sandbox\bin\mystatic.lib c:\sandbox\bin\mystatic2.lib

相反,它写道:

LIBS = c:\sandbox\bin\mystatic2.lib c:\sandbox\bin\mystatic2.lib

我认为发生的事情是 qmake 获取与“mystatic”匹配的所有文件的列表,并获取第一个。不幸的是“mystatic2.lib”也匹配这个并且“mystatic2.lib”在“mystatic.lib”之前的词法上结束。

Qt Visual Studio 集成做同样的事情。VS 过滤掉重复项,但包含项中缺少 .lib 条目。我一直无法找出为什么 VS 能够像这样链接。

于 2010-03-11T14:10:48.123 回答