我有一个用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
中有以下两个文件:
我不确定在-l
标记中提供什么,所以我尝试使用libsomelib.lib
,libsomelib
和somelib
,就像在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并使用cl
和link
手动编译此示例,则程序链接就可以了。为此,我使用命令:
cl /MT /EHsc /c main.cpp
link /LIBPATH:C:\Users\myuser\myproject libsomelib.lib main.obj /out:test.exe
我该如何解决?提前谢谢!
答案 0 :(得分:0)
不知怎的,我设法使用MSVC编译代码。
我尝试在Qt-Creator上重现编译,但没有成功;还试图使用Qt Add-in从VS导出qmake项目,但问题仍存在于qt creator中。所以我放弃并继续使用VS进行编译。