c++ - Qt 和静态库文件——如何编译

标签 c++ c windows qt qt5

我需要构建一个链接到静态 .lib 库(使用/MT 编译)的 Qt5 64 位程序。我尝试将下面的行从 MD 更改为 MT:

QMAKE_CFLAGS_RELEASE    = -O2 -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG      = -Zi –MTd

在文件D:\Qt\Qt5.0.0src\qtbase\mkspecs\win32-msvc2010\qmake.conf中

并重新编译它

configure -prefix %CD%\qtbase -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop

然后 nmaking 它,但它失败了:

XPathGrammar.cpp
Generating Code...
        lib /NOLOGO  /OUT:release\WebCore.lib @C:\Users\Paul\AppData\Local\Temp\WebCore.lib.4480.3319717.jom
LINK : fatal error LNK1181: cannot open input file '.obj\release_shared\SettingsMacros.obj'
jom: D:\Qt\Qt5.0.0src\qtwebkit\Source\WebCore\Makefile.WebCore.Target.Release [release\WebCore.lib] Error 1181
jom: D:\Qt\Qt5.0.0src\qtwebkit\Source\WebCore\Makefile.WebCore.Target [release] Error 2
jom: D:\Qt\Qt5.0.0src\qtwebkit\Source\WebCore\Makefile.WebCore [sub-Target-pri-make_first-ordered] Error 2
jom: D:\Qt\Qt5.0.0src\qtwebkit\Makefile [sub-Source-WebCore-WebCore-pro-make_first-ordered] Error 2
jom: D:\Qt\Qt5.0.0src\Makefile [module-qtwebkit-make_first] Error 2

似乎没有生成“SettingsMacros.obj”文件。这是为什么?

我需要在配置字符串中包含“-static”吗?我知道Qt doesn't get along with /MT但我的项目需要它,否则我将无法链接那些 .lib 文件

最佳答案

是的,您确实需要添加 -static。为我工作。

关于c++ - Qt 和静态库文件——如何编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14524476/

相关文章:

c++ - 合并排序的合并操作无法使用 C++ vector

c - 自修改代码,复制/跳入堆失败

c++ - "Undefined Behavior"真的允许*任何事情*发生吗?

windows - 加密NG : Exporting RSA key with BCryptExportKey fails with STATUS_INVALID_HANDLE

c# - COM DLL 依赖项中静态 DLL 数据的多个进程和拷贝

c++ - Eigen 中的自定义标量类型

c++ - std::binary_function - 调用不匹配?

c++ - OpenCL 内核计时测量为 0 秒或导致 SIGABRT

c - 使用 ansi C 中的字典将完整的字符串解析为单词

python - 防止多处理库中的文件句柄继承