2014-09-03 3 views
0

Я получил следующий сценарий:Qt 5 + MSVC2013 статический внешний Lib LNK2001 Windows API

  • библиотека, которая использует некоторые функции Windows, как RegOpenKeyExA ASO (создан и собран с Visual Studio 2013/MD)
  • малого консольное приложение, созданное в VS2013, которое использует библиотеку (static linked;/MD). Создание консольного приложения прекрасно работает
  • Малый Qt5 Gui приложение, которое использует LIB, а также (статические связаны, Qt 5.3.1 с MSVC2013)

Когда я построить Qt приложение в Qt Creator Я получаю следующий вывод:

10:39:52: The process "D:\Qt\Qt5.3.1\5.3\msvc2013\bin\qmake.exe" exited normally. 
10:39:52: Starting: "D:\Qt\Qt5.3.1\Tools\QtCreator\bin\jom.exe" 
    D:\Qt\Qt5.3.1\Tools\QtCreator\bin\jom.exe -f Makefile.Release 
    link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST /MANIFESTFILE:release\TEST_app_Qt.exe.embed.manifest /OUT:release\TEST_app_Qt.exe @C:\Users\gortner\AppData\Local\Temp\TEST_app_Qt.exe.12772.63.jom 
MyLib.lib(MyLib.obj) : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance 
LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library 
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol [email protected] 
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol [email protected] 
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol [email protected] 
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol [email protected] 
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol [email protected] 
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol [email protected] 
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol [email protected] 
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol [email protected] 
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol [email protected] 
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol [email protected] 
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol [email protected] 
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol [email protected] 
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol [email protected] 
release\TEST_app_Qt.exe : fatal error LNK1120: 13 unresolved externals 
jom: D:\Development\build-TEST_app_Qt-Desktop_Qt_5_3_MSVC2013_32bit-Release\Makefile.Release [release\TEST_app_Qt.exe] Error 1120 
jom: D:\Development\build-TEST_app_Qt-Desktop_Qt_5_3_MSVC2013_32bit-Release\Makefile [release] Error 2 
10:39:52: The process "D:\Qt\Qt5.3.1\Tools\QtCreator\bin\jom.exe" exited with code 2. 
Error while building/deploying project TEST_app_Qt (kit: Desktop Qt 5.3 MSVC2013 32bit) 
When executing step 'Make' 
10:39:52: Elapsed time: 00:01. 

Мой .pro файл:

# 
# Project created by QtCreator 2014-09-01T11:10:50 
# 
#------------------------------------------------- 

QT  += core gui 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = TEST_app_Qt 
TEMPLATE = app 

SOURCES += main.cpp\ 
    mainwindow.cpp \ 
    mymath.cpp \ 
    stdafx.cpp 

HEADERS += mainwindow.h \ 
    mymath.h \ 
    targetver.h \ 
    stdafx.h 

FORMS += \ 
    mainwindow.ui 

INCLUDEPATH += $$PWD/inc 
DEPENDPATH += $$PWD/inc 

win32: LIBS += -L$$PWD/lib/ -lMyLib 

#win32: PRE_TARGETDEPS += $$PWD/lib/MyLib.lib 

QMAKE_CFLAGS_RELEASE -= -MT 
QMAKE_CXXFLAGS_RELEASE -= MT 
QMAKE_CFLAGS_RELEASE += /MD 
QMAKE_CXXFLAGS_RELEASE += /MD 

Как уже упоминалось выше. Когда я использую lib в VS-проекте, он отлично работает, но в Qt у меня есть проблемы

+0

Надеюсь, что это ссылка решить http://stackoverflow.com/questions/12528099/error-with-regopenkeyex –

+0

может помочь U Http: // StackOverflow .com/questions/12528099/error-with-regopenkeyex LIBS + = advapi32.lib –

ответ

0

Если вы просматриваете перечисленные недостающие символы в MSDN, вы обнаружите, что они находятся в Advapi32.lib. Этот импорт lib не указан в LIBS в вашем .pro-файле. Попробуйте добавить следующее:

win32: LIBS += Advapi32.lib 
+0

Спасибо за подсказку. С этим и некоторыми дополнительными изменениями (удалено #include "stdafx.h") я получил его работу! –

 Смежные вопросы

  • Нет связанных вопросов^_^