Мы создаем веб-приложение (C# .NET), которое использует неуправляемые библиотеки в форме обертки Emgu opencv. Мы заставляем сборку быть в 32-битной (x86), и мы используем 32-разрядную версию Emgu.OpenCV Неустановленные DLL не найдены asp.net
Все это работает хорошо на локальную сборку, но когда публикуется на нашем веб-сервере OpenCV Dll (s) не нагрузка:
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)
Я попытался следующие вещи, которые я нашел на StackOverflow и других источники:
- Поместите неуправляемый OpenCV DLL файлы в отдельном каталоге и поставить путь к этому каталогу в переменную окружения пути и перезапустить WebService.
- Испытано позволяет ли конфигурация сервера для неуправляемого выполнения кода (да)
- Ввод неуправляемый OpenCV библиотеки DLL в system32 \ Inetsrv и Syswow64 \ Inetsrv каталоги
- Puting неуправляемый OpenCV DLL файлы в подкаталоге «x86» в в , прежде чем упомянутые папки
Я понимаю: http://msdn.microsoft.com/en-us/library/ms366723.aspx
является причиной всех проблема, однако я не понимаю, почему редактирование переменной пути для включения правильного пути, содержащего Dll, не решает ничего.
Последнее полезное сообщение об этой проблеме было в 2008 году, однако не было доказано, что решение, предлагаемое без дурака, было предложено, так что вся помощь очень ценится!
Являются ли DLL зарегистрированными на машинах разработки? i.e через regsvr32 Установлен ли пул приложений в режиме 32BIT? –
DLL не зарегистрированы на машинах разработки (так что ситуация на сервере разработки и веб-сервере одинакова), а пул приложений настроен на разрешение 32-разрядных приложений (IIS7) – Arthur
, если вы используете Depends для opencv_core240.dll, все DLL-файлы перечислены доступно на веб-сервере? –