제 3자가 관리되지 않는 코드 (86/64로 구분) 컴파일 (86/64로 구분) 플랫폼 중 하나에 대한 관리 C# .NET을 DLL을 제공합니다 : 2 개의 관리되는 x86/x64 dll을 하나의 관리되는 AnyCpu 라이브러리에 결합하는 방법은 무엇입니까?
- FooManaged_x86.dll
- FooManaged_x64.dll을
이것은 수신 한 것입니다 (원시 코드도 관리되지 않는 dll도 아닙니다).
그런 다음 x86 또는 x64를 대상으로하는 C# .NET 응용 프로그램 (또는 라이브러리)을 만들고 해당 관리 DLL을 직접 참조 할 수 있습니다. 모든 목표는 훌륭하지만 하나의 특정 플랫폼으로 제한됩니다.
내 응용 프로그램은 AnyCpu (목표)를 대상으로하고 x64 dll (컴파일러 경고 표시)을 참조하며 실제로 x64로 실행될 때만 작동합니다. 다시 말하지만, 이것은 하나의 특정 플랫폼에 묶여 있습니다.
은 내가 동적 (후드 같이 DllImport 및 수동 AssemblyLoad를 사용하여) 런타임시 생성하라 DLL을 로딩하여 하나의 관리 DLL로 (Fody.Costura와) 관리되지 않는 86/64 DLL을 결합 할 수 있다는 것을 알고있다. 나는 큰 성공을 거두었지만이 방법은 에 적합하지 않다. dlls. 관리 C#에서 관리되는 C# dll로 PInvoke를해야합니다.
Q : 두 개의 관리되는 x86/x64 dll을 PInvoke가없는 하나의 관리되는 AnyCpu dll에 결합 할 수있는 방법이 있습니까?
내가 아는 한 x86을 참조하면 컴파일 된 대상이 x86과 x64에서 모두 실행될 수 있습니다. 나는 심지어 당신이 AnyCpu와 x86뿐만 아니라 당신의 프로젝트를 컴파일 할 수 있다고 생각한다. 그러나 나는 완전히 확신하지 못한다. – gilmishal
@gilmishal : 테스트되지는 않았지만 ... 많은 경우 x86은 좋은 기본값입니다. 그러나 제 3 자 라이브러리는 대용량 파일/데이터 세트에서 작동하므로 64 비트는 실제 이점을 제공합니다. –