다른 프로젝트에서 사용하려는 DLL 안에 클래스가 있습니다. 나는이 작업을 수행하는 방법에 대한 this tutorial를 읽고 내 의사 코드DLL 내에서 클래스 사용
#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);
interface.h이
처럼 보인다 그리고 나는 ISomeInterface
및 CreateSomething
구현 SomeDLL.dll
있습니다.
클라이언트에서 이것을 사용하려고하면 링커 오류가 발생합니다. 클라이언트는 다음과 같습니다
Client.cpp
#include "interface.h"
SOMEHANDLE h = ::CreateSomething(); // Linker error here: Unresolved external
나는이 문제를 해결 할 수 있습니다 VC의 클라이언트 프로젝트의 종속성 ++로 DLL 프로젝트를 추가하여. 그러면 모든 것이 좋습니다.
이 문제는 내가 standalong dll을 사용하고 싶다면 무엇입니까? 링커 에러를 제거하려면 어떻게해야합니까?
런타임시 DLL을로드하고 클라이언트 용 인터페이스를 래핑 할 수있는 정적 라이브러리를 제공해야 할 수도 있습니다. 보십시오 [여기] (http://stackoverflow.com/questions/3360828/plugin-pattern-with-dll-how-can-i-extract-plugin-interface-from-dll) –