하나의 C# WinForms 프로젝트가 포함 된 솔루션에서 EmguCV를 참조해야합니다.참조 된 어셈블리의 여러 버전 간 자동 전환
동일한 라이브러리의 네 가지 버전, 즉 x86 vand x64가 있으며 GPU가 지원되거나 지원되지 않습니다. 이 라이브러리에는 OpenCV의 관리되지 않는 DLL뿐만 아니라 EmguCV의 관리 DLL에 대한 참조가 필요합니다. 올바른 비 관리 버전을 [Bin]
폴더에 복사하는 것은 빌드 후 이벤트를 통해 쉽습니다.
코드를 통해 관리되는 참조를 쉽게 전환 할 수 있기를 원합니다. 어쩌면 같은 다음은 :
public enum EnumEmguCvTarget
{
None, // Do not use EmguCv
EmguCvTargetTbb86, // Target EmguCv for x86 without GPU.
EmguCvTargetGpu86, // Target EmguCv for x86 with GPU.
EmguCvTargetTbb64, // Target EmguCv for x64 without GPU.
EmguCvTargetGpu64, // Target EmguCv for x64 with GPU.
}
public EnumEmguCvTarget EmguCvTarget
{ get { return (EnumEmguCvTarget.EmguCvTargetGpu64); } }
내가 컴파일 시간 (늦은 바인딩되지 않음)에서 이러한 어셈블리를 참조하고 있기 때문에, 내가 프로그래밍 방식 [EmguCvTarget]
의 값에 따라 버전 사이를 전환 할 수있는 방법은 무엇입니까?
그것은 작동하지 않을 것이다. x64 라이브러리를 참조하고 사용하는 dll은 x86 라이브러리를 동시에로드하거나 참조 할 수 없다. 인터페이스 프로젝트 (AnyCPU)를 만든 다음 리플렉션을 통해 어셈블리를로드하고 인터페이스에 캐스트 한 다음 아무 일도 일어나지 않은 것처럼 사용할 수 있습니다. – jessehouwing
@jessehouwing : 고마워요. '인터페이스 프로젝트 '에 대해 자세히 설명해 주시겠습니까? 또한 리플렉션에 의지하는 경우 초기 바인딩과 같은 Intellisense 작업을 계속 수행 할 수있는 방법이 있습니까? –
그렇습니다. 인터페이스의 전체적인 아이디어는 다음과 같습니다. – jessehouwing