2017-06-08 35 views
-2

私はWindows用のコードを書くときにいくつかの機能は、たとえばTextOut(...)機能のために、のWin32APIの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

ユニコードでコンパイルできますか? 'TextOutA'がコンパイルされているかどうかチェックしましたか? – marcinj

+2

Visual Studio Communityをお試しください。無料で、Windows用です。 – ZDF

+1

あなたのプロジェクトは 'Gdi32.lib'にリンクしていますか? –

答えて

2

シンボル[email protected]は、どのライブラリからもエクスポートされません。シンボルは、TextOutATextOutW(適切な装飾あり)と呼ばれます。 Windows APIと互換性のないヘッダーファイルを使用しており、TextOutTextOutAまたはTextOutWのいずれかにマップできません。 official SDKの使用を検討してください。

脇に:TextOutへの呼び出しには、const char*ではなく、const TCHAR*が必要です。配列charを使用する場合は、TextOutAに電話してください。代わりにwchar_t配列を使用し、TextOutWを呼び出すことをお勧めします。

関連する問題