13

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

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

プロジェクトA

プロジェクトB

プロジェクトC

階層は次のようになります

projectCはprojectAに依存するprojectBに依存します。projectC にはメイン関数があり、projectB と projectA にはメイン関数はありません。私が得ているエラーは次のとおりです。

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

構成プロパティ -> リンカー -> システム -> サブシステムをコンソール (/SUBSYSTEM:CONSOLE) に変更しようとしましたが、問題は解決しません。

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

4

4 に答える 4

20

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

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

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

静的ライブラリの詳細については、MSDN ライブラリを参照してください。

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

于 2013-06-21T06:23:57.933 に答える
10

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

于 2013-10-06T17:49:25.887 に答える
4

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

したがって、[プロパティ] > [構成の種類] > [.dll] に移動します。

本当に .dll を作成したい場合。

于 2019-02-08T19:40:09.363 に答える