1

複数の DLL を含む Visual Studio 2010 ソリューションにコードを追加しています。一部の DLL は他の DLL に依存しています。

ある (既存の) DLL の lib ファイルを別の (新しい) DLL に入力するように指定する方法を考えています。

まず、既存の DLL プロジェクトで lib ファイルを作成するように指定するにはどうすればよいですか?

次に、新しい DLL プロジェクトが既存のプロジェクトの lib ファイルに依存する必要があることをどのように示すのですか?

コードは正常にコンパイルされます。未解決の外観を取得しています。

4

2 に答える 2

4
  1. プロジェクトのプロパティ: DLL を生成するプロジェクトを含め、各プロジェクトのプロパティにライブラリ参照を追加する必要があります。

    プロジェクト DLL_B が DLL_A を使用するとします。ソリューション エクスプローラーで DLL_B を選択し、Alt-Enter キーを押して、[構成プロパティ] -> [リンカー] -> [入力] に移動し、DLL_A.lib を [追加の依存関係] に追加します。また、..\Release を [General] -> [Additional Library Dependencies] に追加します (同様に、デバッグ モードで ..\Debug を追加します)。デバッグ ビルドとリリース ビルドの両方で必ず変更してください。

  2. 解決策: ユーザーが使用するライブラリにユーザーを依存させる必要があります。

    ソリューション エクスプローラーでソリューションを選択し、Alt-Enter キーを押して、[共通プロパティ] -> [プロジェクトの依存関係] に移動します。DLL_B プロジェクトの場合、[依存先] ペインで DLL_A を確認します。

これは VS2008 に基づいていますが、VS2010 でも同様のはずです。

于 2012-06-20T20:54:14.937 に答える
1

ソースDLLプロジェクト(プロジェクト作成ウィザードで指定)の「シンボルのエクスポート」設定を省略していたことがわかりました。これにより、declspecが次のように定義するヘッダーファイルが作成されます。

#ifdef TESTFILTERS_EXPORTS
#define TESTFILTERS_API __declspec(dllexport)
#else
#define TESTFILTERS_API __declspec(dllimport)
#endif

これは、「TestFilters」というタイトルのDLLプロジェクト用です。

エクスポートすることを目的としたクラス定義の場合、TESTFILTERS_API定義をクラスのヘッダーファイルで次のように使用する必要があります。

class TESTFILTERS_API CTestFilters {...};

少なくとも1つのクラス定義にdeclspec(dllexport)が存在すると、libファイル(つまり、TestFilters.lib)が自動的に作成されます。

于 2012-06-21T14:11:46.583 に答える