3

VisualStudio2010を使用してCでWindowsコードを開発しています。

私はいくつかの関連プロジェクトに取り組んでいます:静的ライブラリ、DLL、および実行可能ファイル。DLLには静的ライブラリがリンクされている必要があり、実行可能ファイルはDLLに依存します。(「暗黙の」DLLリンクを使用しています。DLLのロードとアンロードを制御する必要はありません。)

現在、3つの個別のVS2010プロジェクトがありますが、「サブプロジェクト」として設定できることはわかっています。静的ライブラリはDLLのサブプロジェクトであり、DLLはEXEのサブプロジェクトである必要があります。

私は以下を解決したい:

  • EXEを再構築すると、必要に応じてDLLが再構築され、DLLビルドは必要に応じて静的ライブラリを再構築する必要があります。EXEを開いてF7キーを押すだけで、すべてがビルドされます。

  • EXEをデバッグとして再構築すると、DLLのデバッグ.libファイルとリンクするはずです。同様に、EXEをReleaseとして再構築すると、DLLのRelease.libファイルとリンクするはずです。サブプロジェクトを正しく設定した場合、これは自動的に機能しますか?

編集:私は進歩を遂げました。まず、DLLプロジェクトで、静的ライブラリを使用File / Addしてから追加することを選択しました。Add Existing Project(これはFile、私が知る限り、メニューでのみ使用できます。右クリックメニューにはありません。)次に、左側の[ソリューションエクスプローラー]サイドバーでDLLプロジェクトをクリックし、右クリックしました。Project Dependencies...DLLプロジェクトが静的ライブラリプロジェクトに依存することを選択して設定します。静的ライブラリプロジェクトは最初にビルドする必要があります。Visual Studioは、リンクの依存関係を魔法のように設定したようですF7。DLLプロジェクトでキーを押すと、静的ライブラリプロジェクトがビルドされます。

EXEプロジェクトに対して上記の手順を繰り返してみました。これでDLLがビルドされますが、まだ正しくリンクされていません。リンカは、DLLからエクスポートされた関数が使用できないと文句を言っています。

4

2 に答える 2

1

「サブプロジェクト」を実際に含めることはできませんが、ソリューションに複数のプロジェクトを含めることはできます。次に、[プロジェクト]、[プロジェクトの依存関係...]メニュー項目を開いて、相互の依存関係をマークできます。

また、([プロジェクト] | [参照...]メニュー項目から)1つの参照を別の参照にすることで、いくつかのプロジェクト間に「より強い」依存関係を作成することもできます。たとえば、アプリケーションプロジェクトがライブラリプロジェクトを参照している場合、そのライブラリは自動的にアプリケーションにリンクされます。

于 2012-07-12T22:20:20.180 に答える
0

私はそれを機能させています。これを機能させるために使用した手順は次のとおりです。

  • File / Add / Existing Project...サブプロジェクトとして必要な他のプロジェクトを選択して移動します。ファイルを選択して.vcxproj、ダイアログをOKします。プロジェクトをサブプロジェクトとして追加しました。

  • 左側の[ソリューションエクスプローラー]サイドバーペインでメインプロジェクトを右クリックし、Project Dependencies... [サブプロジェクトをクリックしてメインプロジェクトの依存関係にする]を選択して、ダイアログをOKにします。これはタブ付きのダイアログで、もう1つのタブは「ビルドオーダー」です。それをクリックすると、Visual Studioが最初にサブプロジェクトをビルドしてから、メインプロジェクトをビルドすることを確認できます。これで、サブプロジェクトが最初にビルドされ、次にメインプロジェクトがビルドされるように設定されました。

  • 左側の[ソリューションエクスプローラー]サイドバーペインでメインプロジェクトを右クリックし、References... [参照]ダイアログでAdd New Reference...ボタンをクリックします。メインプロジェクトにサブプロジェクトを参照させて、大丈夫です。これで、リンカがサブプロジェクトの出力ファイルをリンクするように設定されました。

上記の手順を実行して、DLLプロジェクトに静的ライブラリプロジェクトをサブプロジェクトとして含め、EXEプロジェクトにDLLプロジェクトをサブプロジェクトとして含めるためにこれらの手順を再度実行しました。しかし、静的ライブラリファイルが見つからないというビルドエラーが発生しました。したがって、静的ライブラリをDLLライブラリのサブプロジェクトとして設定したとしても、EXEプロジェクト内でその依存関係を設定することが不可欠だと思います。依存関係は推移的ではないようです!静的ライブラリがEXEプロジェクトのDLLサブプロジェクトのサブプロジェクトであり、修正されたことを明確にするために、上記の手順を実行しました。

キーを押すと、すべてがF7構築されます。私が選択Build / Clean Solutionした場合、3つのプロジェクトすべてがクリーンアップされます。リンクすると、必要に応じてデバッグまたはリリースライブラリファイルを取得し、にリンクします。

ヒットF7してビルドすると、依存ライブラリが古くなっていると言ってビルドが失敗することがあります。しかし、F7もう一度押すと、Visual Studioは依存ライブラリを再構築し、構築は成功します。クリーンビルドを強制するためにヒットした場合Ctrl+Alt+F7、ビルドは毎回成功します。VisualStudioにこの癖がある理由はわかりません。

于 2012-07-12T23:54:09.333 に答える