2016-04-22 13 views
-7

私のコードをコンパイルされていません。この出力の視覚的なC++は、このコードは

#include <windows.h> 
int WINAPI _WinMain(HINSTANCE hInstance, 
    HINSTANCE hPrevInstance, 
    LPSTR lpCmdLine, 
    int nCmdShow); 

結果:

LNK1120: 1 unresolved externals 

LNK2019: unresolved external symbol [email protected] reference in function "int _cdecl invoke_main (void)" (? [email protected]@Y AHZX) 

を誰かがこれは何を意味するのかを教えてくださいすることができ、それを修正する方法?

+1

WinMain関数のプロトタイプが表示されていますが、関数を実装した場所は表示されていません。関数が存在することをコンパイラに伝えるとともに、その関数を存在させる必要があります。 – user4581301

+2

**コンパイル時には問題ありません**、**結果をリンクするのは問題です**。あなたは '_WinMain(...)'だけを宣言しましたが、実際の定義はどこですか? –

答えて

3

LNK1120:1つの未解決の外部

1つまたは複数のシンボルあなたのプログラムをリンクしながら、未解決の行ってきました。それについては後で詳しく説明します。

LNK2019:(?invoke_main @@ Y AHZX)未解決の外部シンボル_WinMain機能で16参照 "int型_cdecl invoke_main(無効)" [email protected]として不足しているシンボルの

名1 @。最後の@ 16が意味するのは、かなり長い答えです。あなたが選んだウェブ検索で「名前の絡み合い」と「通話規約」を検索するのが最善です。 _WinMainが欠落している理由については

int WINAPI _WinMain(HINSTANCE hInstance, 
    HINSTANCE hPrevInstance, 
    LPSTR lpCmdLine, 
    int nCmdShow); 

は、プログラマはどこか他のコンパイラ

int WINAPI _WinMain(HINSTANCE hInstance, 
    HINSTANCE hPrevInstance, 
    LPSTR lpCmdLine, 
    int nCmdShow) 
{ 
    // does stuff 
    return resultOfStuff; 
} 

が存在する保証と述べています。

コンパイラは、この約束に非常に満足しており、プログラマが後でファイルや他のファイルの中のある部分をうまく活用できると信じています。

すべてのコードがオブジェクトファイルにコンパイルされると、リンカはその断片をまとめてプログラムまたはライブラリにまとめようとします。これは、約束された名前と約束されたアイテムのアドレスとを照合する全てのオブジェクトファイルを通過する。

プログラマが嘘をついている場合、リンカは約束された機能を見つけられず、使用するアドレスを持たず、関数が存在しないというエラーメッセージを返します。

解決策:この機能を実装します。

関連する問題