リンカー ツール エラー LNK1561
エントリ ポイントを定義しなければなりません
リンカーが、実行可能ファイルで呼び出す最初の関数であるエントリ ポイントを検出できませんでした。 既定では、リンカ―はコンソール アプリの場合は main
または wmain
関数を検索し、Windows アプリの場合は WinMain
または wWinMain
関数を検索し、初期化が必要な DLL の場合は DllMain
を検索します。 /ENTRY リンカー オプションを使用して、別の関数を指定できます。
このエラーは、以下のようないくつかの原因で生じる可能性があります。
- リンクするファイルの一覧に、エントリ ポイントを定義するファイルが含まれていない可能性があります。 エントリ ポイント関数を含むファイルがアプリにリンクされていることを確認します。
- 間違った関数シグネチャを使用してエントリ ポイントを定義した可能性があります。たとえば、関数名のスペルが間違っている、関数名の大文字小文字を間違って使用している、戻り値またはパラメーターの型が間違って指定されている可能性があります。
- DLL をビルドするときに、/DLL オプションを指定していない可能性があります。
- /ENTRY リンカー オプションを使用したときに、エントリ ポイント関数の名前を間違って指定した可能性があります。
- LIB ツールを使用して DLL をビルドするときに、.def ファイルを指定していた可能性があります。 その場合、ビルドから .def ファイルを削除してください。
アプリをビルドするときに、リンカーはエントリ ポイント関数を検索して、コードを開始する呼び出しを行います。 これは、アプリが読み込まれ、ランタイムが初期化された後に呼び出される関数です。 アプリに対してエントリ ポイント関数を指定する必要があります。指定しなければ、アプリを実行できません。 DLL については、エントリ ポイントは省略可能です。 既定では、リンカーはいくつかの特定の名前とシグネチャのいずれかを持つエントリ ポイント関数を検索します (int main(int, char**)
など)。 /ENTRY リンカー オプションを使用して、エントリ ポイントとして別の関数名を指定できます。
例
次の例では LNK1561 が生成されます。
// LNK1561.cpp
// LNK1561 expected
int i;
// add a main function to resolve this error