2008-12-30 142 views
0

我正在構建一個C++應用程序,並需要在Windows上使用PDCurses。我正在使用MS VS 2005的VC++進行編譯,並且出現鏈接錯誤。如何將PDCurses鏈接到Windows上的C++應用程序?

error LNK2019: unresolved external 
symbol [email protected] referenced 
in function __get_key_count 

有11個都具有相同的錯誤代碼,不同的符號錯誤。缺少的符號是__imp__MapVirtualKeyA @ 8,__imp__FindWindowA @ 8,__imp__wsprintfA,__imp__SendMessageA @ 16,__imp__GetWindowThreadProcessId @ 8,__imp__MessageBeep @ 4。這幾乎就像VC++無法找到這些函數的合適的ASCII實現。我也應該注意到,帶有PDCurses的演示程序編譯得很好,儘管它們是C程序。

在C++程序中,我包括使用

extern "C" 
{ 
    #include <curses.h> 
} 

我敢肯定,我忘了對一些C標準庫鏈接的標題,但我不知道是哪一個。

回答

2

GetKeyState()是「user32.dll」中的Windows函數,因此您需要確保您鏈接到「user32.lib」。您可能還需要確保它位於鏈接程序庫列表中的PDCurses庫之後。

+0

是的,我已經追蹤到這些潛在的問題,並且我連接到User32.lib,advapi32.lib等等。這似乎沒有幫助。我認爲用VC++試圖鏈接C代碼有一些問題,但我無法想象爲什麼。 – paxos1977 2008-12-30 16:42:23

+0

您是否檢查過訂單,以便user32.lib出現在PDCurses.lib之後? – DavidK 2008-12-30 22:34:10

1

您是否在您的機器上創建了PDCurses - 使用MS VC++?如果是這樣,我不確定發生了什麼。如果沒有,那麼你有一個很好的機會,你使用的是不兼容MS VC++。混合來自不同C++編譯器的代碼是充滿的。這還取決於「其他幾個錯誤」的含義。如果這是對「數百個錯誤」的荒謬的輕描淡寫,那麼這可能是麻煩。如果你只有少數幾個(比如說另一半或更少)類似的錯誤,那麼它就不太可能成爲問題。

0

好吧,我明白了這一點;)我正在用scons構建,其中包含user32.lib,其變量爲USER32_LIB,該變量默認爲空字符串,除非在窗口中定義爲user32.lib。在窗口部分,我有一個錯字,我有USER32_LIb而不是USER32_LIB

相關問題