У меня есть сторонняя (закрытая исходная) статическая библиотека (.lib), написанная на C, с C ++ совместимым заголовком и очень простой тестовой программой C ++.
После создания нового проекта в Qt-creator я попытался скомпилировать программу и создать ссылку на статическую библиотеку, но компоновщик не может разрешить символы: «Неразрешенный внешний символ», ошибка LNK2019.
Я использую Qt 5.3 с компилятором из VisualC ++ 2013 Express (который я считаю MSVC12), а файл .pro, используемый в Qt-creator, выглядит следующим образом:
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, но каждая комбинация была неудачной.
Это мой первый раз, когда я использую MSVC от Qt-creator (не то, чтобы у меня был большой опыт работы с ним), поэтому я не могу понять команду связывания, выпущенную 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
Как я могу это исправить? Заранее спасибо!
Каким-то образом мне удалось скомпилировать код с помощью MSVC.
Я пытался воспроизвести компиляцию на Qt-Creator, но безуспешно; также пытался экспортировать проект qmake из VS с помощью надстройки Qt, но проблема сохраняется в Qt Creator. Поэтому я сдаюсь и продолжаю использовать VS для компиляции.