qt-creator和msvc无法添加(静态)库

时间:2014-06-05 08:58:03

标签: c++ qt visual-c++ qt-creator msvc12

我有一个用C语言编写的第三方(闭源)静态库(.lib),带有C ++兼容的头文件和一个非常简单的C ++测试程序。

在Qt-creator中创建新项目后,我尝试编译程序并链接到静态库,但链接器无法解析符号:“未解析的外部符号”,错误LNK2019。

我正在使用Qt 5.3和VisualC ++ 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

我该如何解决?提前谢谢!

1 个答案:

答案 0 :(得分:0)

不知怎的,我设法使用MSVC编译代码。

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