2009-01-07 69 views
1

嗯,這裏有一個很好的晦澀的。我試圖在Visual Studio 2005中編譯最新的開放式傳輸大亨源代碼(這是一個C++應用程序,它使用zlib,dx8和其他一些相當常見的庫)。用VS2005編譯openttd - freetype中的鏈接器錯誤

我弄幾個鏈接錯誤做的FreeType的依賴關係:

Error 1 error LNK2001: unresolved external symbol @[email protected] fontcache.obj 
Error 2 error LNK2001: unresolved external symbol @[email protected] fontcache.obj 
Error 3 error LNK2001: unresolved external symbol @[email protected] fontcache.obj 
Error 4 error LNK2001: unresolved external symbol @[email protected] fontcache.obj 
Error 5 error LNK2001: unresolved external symbol @[email protected] fontcache.obj 
Error 6 error LNK2001: unresolved external symbol @[email protected] fontcache.obj 
Error 7 error LNK2001: unresolved external symbol @[email protected] fontcache.obj 
Error 8 error LNK2001: unresolved external symbol @[email protected] fontcache.obj 
Error 9 fatal error LNK1120: 8 unresolved externals ..\objs\Win32\Release\\openttd.exe 

我已經下載了最新的FreeType穩定,編譯它(也是在VS2005),並把ft2build.h和的FreeType將目錄包含到我的VS8/VC/include目錄中,並將libfreetype2.lib庫編譯到我的VS8/VC/lib目錄中。我可能會錯過什麼?

謝謝!

回答

1

在錯位的函數名開始的@跡象表明您fontcache.obj文件期待這些功能有__fastcall調用約定,這是不尋常的默認調用約定是__cdecl。我懷疑用於構建庫和用於構建應用程序的編譯器設置中存在不匹配。有關更多信息,請參閱herehere

+0

謝謝 - 結果openttd項目*被設置爲使用fastcall構建。我第一次嘗試將freetype切換到fastcall,但它拋出了一些編譯器錯誤 - 所以我將openttd項目切換到了cdecl,而且工作正常。 – sanbikinoraion 2009-01-08 00:13:04