web-dev-qa-db-ja.com

エラーLNK1561:エントリポイントを定義する必要があります

Visual Studio 2012を使用しています。

私のソリューションには3つのプロジェクトがあります

projectA

projectB

projectC

そして階層は

projectCprojectBに依存しますprojectAに依存します。 projectCにはmain functionがあり、projectBとprojectAにはmainがありません。私が得ているエラーは次のとおりです。

error LNK1561: entry point must be defined      projectA
error LNK1561: entry point must be defined      projectB

構成プロパティ->リンカー->システム->サブシステムからコンソール(/ SUBSYSTEM:CONSOLE)で変更を試みましたが、問題はまだ解決しません

これから私を助けてください。

13
Euler

「モジュール」という用語を誤解しているようです。 Visual StudioにはそのようなC++プロジェクトはありません。 C++プロジェクトは、次の3つのカテゴリに分類できます。

  • プログラム-コンパイルにより、実行可能なexeファイルが生成されます。
  • 静的ライブラリ-コンパイルはlibファイルを生成します。これは別のプロジェクトに含まれている場合があり、コンパイル中にリンクされます。
  • 動的ライブラリ-コンパイルによりdllファイルが生成されます。このファイルは実行時にプログラムに添付され、追加機能を提供します。

説明から、projectBとprojectCを静的ライブラリにしたいが、実行可能ファイルとして作成した。新しいプロジェクトウィザードを再度実行し、「Windowsアプリケーション」ではなく「静的ライブラリ」を選択します。

MSDNライブラリ で静的ライブラリの詳細を読むことができます。

静的ライブラリがアプリケーションにとって非常に重い場合は、プロジェクトにprojectBおよびprojectCファイルを含めるだけでかまいません(オプションで、クラスの名前を混同しないように名前空間に注意してください)。これらはすべて、これらの「モジュール」に実装する予定の機能の量によって異なります。

20
Spook

プロパティ->リンカ->システム->サブシステムを "Windows(/ SUBSYSTEM:WINDOWS)"に設定します

9
user2852297

おそらく何が起こっているのか、私で何が起こっていたかは、プロジェクトのプロパティを.exeから.dllに切り替えるときに、デバッグからリリースに、またはx86から​​x64に切り替えると、そのたびに、 。EXE。各構成には独自のプロパティがあります。

したがって、[プロパティ]> [構成タイプ]> [.dll]に移動します

実際に.dllを作成したい場合。

4
Mark Aven

私はあなたがこのプロジェクトの作成にWindowsを使用していると推測します。私にとっては、通常SDLを使用している場合、このエラーが発生します。これを入力するだけで#include <Windows.h>修正する必要があります。修正しない場合は、修正方法がわかりません。

0
One Ace