2017-06-08 12 views
-2

Wenn ich Code für Windows schreiben mehrere Funktionen geben Sie mir Fehlermeldungwin32api TextOut()

"undefined reference to ...",

zum Beispiel TextOut(...) Funktion

erzeugen

"undefinierter Verweis auf 'TextOut @ 20'".

Beispiel:

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; 

Ich benutze GNU GCC Codeblöcke - mingw Compiler

Bitte, mir jemand sagen, warum ich diese Fehlermeldung? Danke.

+0

Kompilieren Sie mit Unicode aktiviert? Hast du überprüft, ob mit 'TextOutA' kompiliert wird? – marcinj

+2

Testen Sie die Visual Studio Community. Ist kostenlos und ist für Windows gemacht. – ZDF

+1

Verbindet Ihr Projekt mit 'Gdi32.lib'? –

Antwort

2

Das Symbol [email protected] wird nicht aus einer Bibliothek exportiert. Die Symbole heißen TextOutA und TextOutW (mit entsprechender Dekoration). Sie verwenden Header-Dateien, die nicht mit der Windows-API kompatibel sind, und sie können TextOut entweder TextOutA oder TextOutW nicht zuordnen. Erwägen Sie die Verwendung der official SDK.

Als Nebenbemerkung: Der Aufruf an TextOut dauert const TCHAR*, kein const char*. Wenn Sie ein char Array verwenden möchten (sollten Sie nicht), rufen Sie TextOutA. Es wird empfohlen, stattdessen wchar_t Arrays zu verwenden und TextOutW aufzurufen.

Verwandte Themen