우리는 Emgu opencv 래퍼 형태로 관리되지 않는 라이브러리를 사용하는 웹 응용 프로그램 (C# .NET)을 빌드하고 있습니다. 우리는 빌드를 32 비트 (x86)로 만들고 있으며, 32 비트 버전의 Emgu를 사용하고 있습니다.OpenCV 관리되지 않는 DLL을 찾을 수 없습니다 asp.net
지역 빌드에 좋은 일 모든하지만, 우리의 웹 서버에 게시 할 때 OpenCV의 DLL을 (들)로드 실패 :
나는 유래 및 기타에 발견 한 다음과 같은 일을 시도System.DllNotFoundException
Unable to load DLL 'opencv_core240': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
System.TypeInitializationException: The type initializer for 'Emgu.CV.CvInvoke' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'opencv_core240': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
at Emgu.CV.CvInvoke.cvRedirectError(CvErrorCallback errorHandler, IntPtr userdata, IntPtr prevUserdata)
at Emgu.CV.CvInvoke..cctor()
--- End of inner exception stack trace ---
at Emgu.CV.CvInvoke.cvCreateImageHeader(Size size, IPL_DEPTH depth, Int32 channels)
at Emgu.CV.Image`2.AllocateData(Int32 rows, Int32 cols, Int32 numberOfChannels)
at Emgu.CV.Image`2.set_Bitmap(Bitmap value)
at Emgu.CV.Image`2..ctor(Bitmap bmp)
출처 :
- 는 별도의 디렉토리에 관리되지 않는 OpenCV의 DLL의를 넣고 경로 환경 변수에서이 디렉토리에 경로를 넣어 웹 서비스를 다시 시작합니다.
- 는 서버 설정이 관리되지 않는 코드 실행을 허용하는지 여부를 테스트 (예)
- 퍼팅 관리되지 않는 OpenCV의 DLL의을 System32 \의 inetsrv에와 SysWOW64와 \ inetsrv를 디렉토리
- 퍼 팅 관리되지 않는 OpenCV의 DLL의 하위 디렉토리 '86'에서의 http://msdn.microsoft.com/en-us/library/ms366723.aspx
모두의 이유는 다음 앞서 언급 한 폴더
나는이 이해 문제가, 그러나 나는 왜 경로 변수를 편집하여 Dll을 포함하는 올바른 경로를 포함하여 아무것도 해결하지 못하는지 이해하지 못합니다.
2008 년에 마지막으로 유용한 게시물이 있지만 아직 바보가 아닌 솔루션이 아직 제공되지 않아 모든 도움을 많이 받으실 수 있습니다!
개발 컴퓨터에 DLL이 등록되어 있습니까? 즉 regsvr32를 통해 응용 프로그램 풀이 32BIT 모드로 실행되도록 설정되어 있습니까? –
DLL은 개발 컴퓨터에 등록되어 있지 않으므로 (개발 및 웹 서버에서 상황이 동일하므로) 32 비트 응용 프로그램 (IIS7) – Arthur
을 사용하도록 설정하면 응용 프로그램 풀은 opencv_core240.dll에 따라 다릅니다. 모든 DLL이 나열됩니다. 웹 서버에서 사용할 수 있습니까? –