QT Creator和MSVC无法添加(静态)库

3
我有一个写在C语言中的第三方(闭源)静态库(.lib),并配合一个C++兼容头文件和一个非常简单的C++测试程序。
我在Qt-creator中创建了一个新项目,试图编译这个程序并链接到静态库,但是链接器无法解析符号:错误信息为“Unresolved external symbol”,错误代码为LNK2019。
我正在使用Qt 5.3,并使用来自Visual C++ 2013 Express (MSVC12)的编译器,而在Qt Creator中使用的.pro文件如下所示:
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

LIBS += -L"C:/Users/myuser/myproject" -lsomelib

SOURCES += main.cpp

HEADERS += \
    somelib.h

假设在 C:\Users\myuser\myproject 中有以下两个文件:
  • libsomelib.lib
  • somelib.h
我不确定在 -l 标志中应该提供什么,因此我尝试了 libsomelib.liblibsomelibsomelib,就像我在 Linux 中做的那样,但每种组合都失败了。
这是我第一次使用 Qt Creator 中的 MSVC(虽然我没有太多经验),所以我无法真正理解由 qt-creator 发出的链接命令,其中包括我不知道的清单文件,并且 - 显然 - 没有任何文件或库在命令中显式列出:
link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST /MANIFESTFILE:debug\myproject.exe.embed.manifest /OUT:debug\myproject.exe @C:\Users\myuser\AppData\Local\Temp\myproject.exe.4260.531.jom

请注意,如果我不使用 qmake 并手动使用 cllink 编译此示例,则程序链接正常。为了实现这一点,我使用以下命令:
cl /MT /EHsc /c main.cpp 
link /LIBPATH:C:\Users\myuser\myproject libsomelib.lib main.obj  /out:test.exe

我该如何解决这个问题?提前感谢您!

在 "C:/Users/myuser/myproject" 中或许可以使用反斜杠吗? - vahancho
@vahancho qmake文档说它会自动修复,但我也尝试了,没有用 :( - AkiRoss
2
不需要指定 .lib 扩展名,也不需要在 UNIX 平台上指定 lib 前缀。所以在你的情况下,“-llibsomelib” 是正确的。这并不能解决问题,只是告诉你这个问题存在。 - Matthias
1个回答

0

我不知道为什么用 MSVC 编译代码成功了。

我尝试在 Qt-Creator 中重新编译,但没有成功;我还尝试使用 Qt Add-in 从 VS 导出 qmake 项目,但问题在 qt creator 中仍然存在。所以我放弃了,在继续使用 VS 进行编译。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接