0

我有以下场景:

  • 使用一些 Windows 函数的库,如 RegOpenKeyExA aso(使用 Visual Studio 2013 /MD 创建和编译)
  • 在 VS2013 中创建的使用库(静态链接;/MD)的小型控制台应用程序。构建控制台应用程序工作正常
  • 也使用 lib 的小型 Qt5 Gui 应用程序(静态链接;带有 MSVC2013 的 Qt 5.3.1)

当我在 Qt Creator 中构建 Qt 应用程序时,我得到以下输出:

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 __imp__CryptAcquireContextW@20
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol __imp__CryptSetKeyParam@16
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol __imp__RegSetValueExA@24
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol __imp__RegQueryValueExA@24
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol __imp__CryptReleaseContext@8
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol __imp__RegOpenKeyExA@20
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol __imp__CryptImportKey@24
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol __imp__RegDeleteValueA@8
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol __imp__CryptDestroyKey@4
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol __imp__GetUserNameA@8
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol __imp__CryptDecrypt@24
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol __imp__SHGetFolderPathA@20
MyLib.lib(MyLib.obj) : error LNK2001: unresolved external symbol __imp__RegCloseKey@4
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.

我的简历:

#
# 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

正如刚才提到的。当我在 VS 项目中使用 lib 时,它工作正常,但在 Qt 中我遇到了麻烦

4

1 回答 1

0

如果您在 MSDN 中查找列出的缺失符号,您会发现它们位于 Advapi32.lib 中。该导入库未列在 .pro 文件的 LIBS 中。尝试添加以下内容:

win32: LIBS += Advapi32.lib
于 2014-09-03T09:01:06.913 回答