0

別のプロジェクトで使用したい dll 内にクラスがあります。これを行う方法についてこのチュートリアルを読みましたが、擬似コードは次のようになります

インターフェイス.h

#ifdef  EXPORT
#define SOMEAPI __declspec(dllexport)
#else
#define SOMEAPI __declspec(dllimport)
#endif

struct ISomeInterface
{
  virtual void SomeMethod()=0;
};

typedef ISomeInterface* SOMEHANDLE;

#define EXTERN_C     extern "C"

EXTERN_C SOMEAPI SOMEHANDLE WINAPI CreateSomething(VOID);

そして、私はSomeDLL.dllwhich と を実装ISomeInterfaceしていCreateSomethingます。
クライアントでこれを使用しようとすると、リンカー エラーが発生します。クライアントは次のようになります:
Client.cpp

#include "interface.h"
SOMEHANDLE h = ::CreateSomething();  // Linker error here: Unresolved external  

VC++ でクライアント プロジェクトの依存関係として dll プロジェクトを追加することで、これを解決できます。それからすべてが良いです。
問題は、これをスタンドアロンの dll として使用したい場合 (現在の場合) です。リンカーエラーを取り除くにはどうすればよいですか?

4

1 に答える 1

0

クライアントプロジェクトの依存関係としてdllプロジェクトを追加することでこれを解決できます

はい、これは、スタンドアロン プロジェクトで手動で行う必要がある 1 つのことを自動的に行います。プロジェクト + プロパティ、リンカー、入力、追加の依存関係の設定。DLL プロジェクトによって生成された .lib ファイルを追加します。インポート ライブラリは、DLL によってエクスポートされた関数についてリンカに通知します。

于 2012-11-10T16:06:00.437 に答える