別のプロジェクトで使用したい 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.dll
which と を実装ISomeInterface
していCreateSomething
ます。
クライアントでこれを使用しようとすると、リンカー エラーが発生します。クライアントは次のようになります:
Client.cpp
#include "interface.h"
SOMEHANDLE h = ::CreateSomething(); // Linker error here: Unresolved external
VC++ でクライアント プロジェクトの依存関係として dll プロジェクトを追加することで、これを解決できます。それからすべてが良いです。
問題は、これをスタンドアロンの dll として使用したい場合 (現在の場合) です。リンカーエラーを取り除くにはどうすればよいですか?