我有一个用 C 编写的第 3 方(闭源)静态库 (.lib),带有一个 C++ 兼容的头文件和一个非常简单的 C++ 测试程序。
在Qt-creator新建项目后,尝试编译程序并链接到静态库,但是链接器无法解析符号:“Unresolved external symbol”,错误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
- 一些lib.h
我不确定在-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
and手动编译此示例link
,则程序链接就好了。为此,我使用以下命令:
cl /MT /EHsc /c main.cpp
link /LIBPATH:C:\Users\myuser\myproject libsomelib.lib main.obj /out:test.exe
我该如何解决?提前致谢!