2017-06-08 98 views
-2

當我寫的代碼爲Windows多種功能給我的錯誤信息WIN32API的TextOut()

「未定義的引用...」,

例如TextOut(...)功能產生

「未定義對'TextOut @ 20'的引用」。

例子:

case WM_KEYDOWN ://cand apas o tasta 
     { 
      char szName[31]; 
      HDC hDC; 

      InvalidateRect(hWnd, NULL, TRUE); 
      UpdateWindow(hWnd); 

      hDC = GetDC(hWnd); 
      GetKeyNameText(lParam, szName, 30); 
      TextOut(hDC, 10, 10, szName, lstrlen(szName)); 
      ReleaseDC(hWnd, hDC); 
     } 
     break; 

我用GNU GCC的代碼塊 - MinGW的編譯器

請,有人告訴我,爲什麼我收到此錯誤信息? 謝謝。

+0

您是否啓用unicode編譯?你是否檢查過編譯過的'TextOutA'? – marcinj

+2

試試Visual Studio社區。是免費的,適用於Windows。 – ZDF

+1

您的項目是否連接到'Gdi32.lib'? –

回答

2

符號[email protected]不從任何庫中導出。這些符號被稱爲TextOutATextOutW(具有適當的裝飾)。您正在使用與Windows API不兼容的頭文件,並且它們無法將TextOut映射到TextOutATextOutW。考慮使用official SDK

順便說一句:撥打TextOut需要const TCHAR*,而不是const char*。如果您希望使用char陣列(您不應該),請致電TextOutA。不過,建議使用wchar_t陣列,然後撥打TextOutW