다양한 IDL 파일에서 가져온 DDS 항목의 정의가 들어있는 정적 라이브러리를 빌드하려고합니다. 내 미들웨어로 OpenDDS를 사용하고 있습니다. 내가 믿는정적 라이브러리에서 템플릿 인스턴스화 방지
Error LNK2005 "public: void __cdecl TAO::unbounded_value_sequence<int>::length(unsigned int)" ([email protected][email protected]@[email protected]@[email protected]) already defined in TAO.lib(TAO.dll)
: 나는 sequence<long>
을 포함하는 IDL 파일을 만들 때
은 내가 링커 오류 심볼의 여러 정의를 포함 얻을 내 정적 라이브러리로 컴파일 한 후 내 응용 프로그램에 정적 라이브러리를 링크 이것은 내 정적 라이브러리에 unbounded_value_sequence
의 템플릿 인스턴스화가 포함되어 있고 내 응용 프로그램에도 인스턴스화가 포함되어 있기 때문입니다. OpenDDS에서 사용하는 ACE TAO에서 오는 것 같습니다.
정적 라이브러리에서 템플릿을 인스턴스화하는 것을 피할 수있는 방법을 찾고 있습니다. 따라서이 템플릿을 함께 연결했을 때 응용 프로그램 내에서 정의를 사용할 수 있습니다. 나는 다음과 같은 추가 시도 :
extern template class TAO::unbounded_value_sequence<int>;
이 다음과 같은 오류가 발생 : 그 인스턴스를 찾기 위해 노력했지만이 아니 내 코드에서 한
Error C2961 'TAO::unbounded_value_sequence<CORBA::Long>': inconsistent explicit instantiations, a previous explicit instantiation did not specify '__declspec(dllimport)'
. 그것은 ACE 자체 내에있을 수 있습니다.
한 프로젝트에서 모든 것을 빌드하면 문제가 발생하지 않지만 이상적인 솔루션은 아닙니다.