다른 C++ 프로젝트에서 일반적으로 사용되는 C++ 클래스 라이브러리 프로젝트가 있습니다. 내 클래스 라이브러리 프로젝트 내부 클래스를 사용할 수 있도록하기 위해, 나는 내 클래스 라이브러리 프로젝트 내에서 템플릿 클래스를 생성 할 때까지클래스 라이브러리 프로젝트에서 템플릿 클래스 만들기 C++
#pragma once
#ifdef MYLIB
# define MYLIB_EXPORT __declspec(dllexport)
#else
# define MYLIB_EXPORT __declspec(dllimport)
#endif
문제 없음 아래의 예와 같은 헤더 파일을 썼다. 문제는 내 템플릿 클래스를 내보낼 수 없다는 것입니다.
나는 "허용되지 같이 DllImport 함수의 정의"를 말하는 compilaton 오류를 얻고있다이 경우에서 MyClass.h
template<class T>
class MYLIB_EXPORT MyClass
{
void myMethod();
// ...
}
template<class T>
void MyClass::myMethod()
{
// ...
}
. 나는 그 문제를 일으키는 원인을 안다. 나는 그것을 이해한다. 내 클래스 라이브러리 프로젝트를 사용하는 다른 프로젝트는 MYLIB_EXPORT 키워드를 __declspec (dllimport)로 변환합니다. 따라서 MyClass의 메소드가 DLL에 정의 될 것으로 기대하고 있습니다. 그러나 컴파일러는 헤더 안에 정의를 봅니다.
이 상황을 어떻게 극복하고 내 클래스 라이브러리 프로젝트 내에 정의 된 템플릿 클래스를 내보낼 수 있습니까?