2012-05-20 77 views
0

我正在使用CMake在Windows上使用Visual Studio 2010 Express構建基於Qt的應用程序。當CMake的配置,我得到以下錯誤:無法安裝MSVCP100.dll

System runtime library file does not exists: 
'MSVC10_REDIST_DIR-NOTFOUND/x86/Microsoft.VC100.CRT/msvcp100.dll 

System runtime library file does not exists: 
'MSVC10_REDIST_DIR-NOTFOUND/x86/Microsoft.VC100.CRT/msvcr100.dll 

然後,當我嘗試編譯,我得到這個錯誤(無論是在Visual Studio中嘗試,並與MSBuild的):

MSVCRT.lib(crtexew.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function ___tmainCRTStartup 
C:\Users\Kurtis\sandbox\UDJ-Desktop-Client\build\src\Release\UDJ.exe : fatal error LNK1120: 1 unresolved externals 

我確定Microsoft Visual C++ 2010 Express不會附帶redistributable that I need。所以我去微軟的網站下載可再發行的文件(x86x64)。但是,安裝後,我仍然得到上述配置和編譯錯誤。有誰知道我做錯了什麼,或者如何解決我的問題?

回答

2

[email protected]是Windows GUI應用程序的入口點,所以無論是從源代碼中缺少,還是不在編寫GUI應用程序,在這種情況下鏈接器標記都不正確。

由於您使用的是qt,因此請確保您的QtMain庫已與您的項目鏈接。你可以把它加在您的來電Find_Package像這樣做:

find_package(Qt4 4.7.0 COMPONENTS QtMain QtCore QtGui QtSQL Phonon REQUIRED) 
+0

嗯,我確實寫一個GUI應用程序(因此QT),所以我想我在我的源代碼丟失_WinMain @ 16。雖然我真的不知道我會在哪裏放置它,或者如果這是CMake應該爲我處理的東西... –

+0

啊,果然,我忘記了包含QtMain,它是用於主函數的跨平臺qt包裝器。謝謝您的幫助! –

+0

@KurtisNusbaum我不確定它是跨平臺嗎?我認爲它只存在於Windows上。 – Fraser