요구 : 파이썬 프로젝트로 (화상 비교 Emgu.CV.World.dll를 사용)는 C# 1 DLL을로드 일부 파라미터를 DLL 내부의 함수를 호출 .86 플랫폼 emgu 이력서 사용시 DLL cvextern를로드 할 수
이미지 비교를 위해 Emgu.CV.World.dll이라는 DLL을 내보내려고했습니다. "모든 CPU"대상에 대해 컴파일하는 동안 DLL 내보내기가 작동하지 않습니다.
mydll = ctypes.cdll.LoadLibrary(self.libPath)
을하지만 DLL 내부에 함수를 호출하는 동안 : 후 x86 플랫폼으로 변경, DLL은 파이썬에서 제대로로드
:WindowsError: [Error -532462766] Windows Error 0xE0434352
ImageContentComparisonResult = mydll.CompareImageContent(self.OutputFile, self.OriginalFile)
는 다음과 같은 예외를 throw
Visual Studio에서 출력 :
A first chance exception of type 'System.IO.FileNotFoundException' occurred in Unknown Module.
이 후, 샘플 Emgu.CV 프로젝트 (GUI)를 만든 같은 예외를 얻었다. 이 내가 Emgu.CV에 "빈 \ 86 \ 디버그"의 x86 및 x64 DLL을 복사 한 후
같은 예외 사항을 가지고, 그것은 샘플 앱 작동했지만 비 GUI에 대한 C# 프로젝트는 필요한 DLL을 복사 한 후에도 작동하지 않습니다.{"The type initializer for 'Emgu.CV.CvInvoke' threw an exception."} InnerException: {"Unable to load DLL 'cvextern': The specified module could not be found. (Exception from HRESULT: 0x8007007E)"}
1) 프로세스에 _.dll_을로드 할 때 아키텍처가 일치해야합니다 (_Python_ 아키텍처가 시작 직후 첫 번째 프롬프트 라인에 표시됨). 따라서 _x86_ 및 _amd64_ 버전을 모두 필요로하지 않습니다. 2) 나는 한번도 시도한 적이 없지만 _C_ _ 인터페이스를 가지고 있고 _C_ 응용 프로그램에서 사용할 수있는 경우를 제외하고는 _C_ _ _.dll_을 _ctypes_를 사용하여 처리 할 수 없다고 확신합니다. 또한 전체 코드뿐만 아니라 조각을 게시 도움이 될 것입니다. 마지막 오류와 관련하여 _cvextern.dll_ (** !!! 또는 일부 종속성 !!! **)을 찾을 수 없습니다. – CristiFati