2014-09-03 10 views
0

I했습니다 시나리오 다음 가지고 : (생성 및 Visual Studio 2013/MD로 컴파일) Qt는 5 + MSVC2013 정적 외부 LIB LNK2001 윈도우 API

  • 작은 RegOpenKeyExA 아소 같은 일부 Windows 기능을 사용

    • 도서관 라이브러리를 사용하는 VS2013에서 만든 콘솔 응용 프로그램 (정적 링크 된/MD). 콘솔 응용 프로그램을 구축하는 것은 잘 작동
    • 뿐만 아니라 lib 디렉토리를 사용
    • 작은 Qt5의 GUI 응용 프로그램 (정적 링크, MSVC2013와 Qt는 5.3.1)

    내가 Qt는 창조주의 Qt는 응용 프로그램을 빌드 할 때 I 출력 다음 얻을 :

    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 
    

    . VS 프로젝트에서 lib를 사용할 때 문제가 없지만 Qt에서 문제가 발생합니다.

  • +0

    희망이 링크가 그것을 해결 http://stackoverflow.com/questions/12528099/error-with-regopenkeyex –

    +0

    U에게 HTTP 도움이 될 : // 유래 다음을 추가하십시오 .com/questions/12528099/error-with-regopenkeyex LIBS + = advapi32.lib –

    답변

    0

    나열된 누락 된 기호를 MSDN에서 찾으면 Advapi32.lib에 있음을 알 수 있습니다. 그 import lib는 .pro 파일의 LIBS에 나열되지 않습니다.

    win32: LIBS += Advapi32.lib 
    
    +0

    힌트를 보내 주셔서 감사합니다. 이것과 몇 가지 추가 변경 사항 (#include "stdafx.h"제거)을 사용하면 작동합니다! –