sobota, 8 lutego 2014

EmguCV / OpenCV - synonim wiecznego problemu... (HRESULT: 0x8007007E)

OpenCV i jej wrapper EmguCV są potężnym narzędziem, którego możliwości są doprawdy ogromne. Niech jednak podniesie rękę ten, kto nie zna TypeInitializationException. Pracuję na Win8.1 64bit, i niestety w tym przypadku problem nie okazał się trywialny (spędziłam nad nim dobrych parę godzin w ciągu dwóch dni). Po podłączeniu wszystkich wymaganych DLLek, jak każą wszystkie tutoriale i wszystkie rozwiązane problemy na StackOverflow, dostałam błąd:
(*)
{System.DllNotFoundException: Nie można załadować biblioteki DLL 'opencv_core290': Nie można odnaleźć określonego modułu. (Wyjątek od HRESULT: 0x8007007E)
   w Emgu.CV.CvInvoke.cvRedirectError(CvErrorCallback errorHandler, IntPtr userdata, IntPtr prevUserdata)
   w Emgu.CV.CvInvoke..cctor()}

Co ciekawe, po podmianie opencv_core290.dll (i innych) na wersję odpowiednią dla mojego systemu (64bit) błąd zmienił się na następujący:
(**)
{System.BadImageFormatException: Próbowano załadować program w niepoprawnym formacie. (Wyjątek od HRESULT: 0x8007000B)
   w Emgu.CV.CvInvoke.cvRedirectError(CvErrorCallback errorHandler, IntPtr userdata, IntPtr prevUserdata)
   w Emgu.CV.CvInvoke..cctor()}

Po zmianie bitowości (jak każe tutorial EmguCV) w zakładce Build w propertiesach projektu znowu dostałam błąd (*)...
Wait... what?! czy ja dobrze widzę? Jak wrzucę coś, co się nie zgadza bitowo to mówi, że mu się nie zgadza, a jak wrzucę coś dobrego, to w ogóle tego nie widzi?!
Po przejściu wszystkich możliwych tutoriali instalacji ze skutkiem co najwyżej mizernym opracowałam metodę nachamową, która jest rozszerzeniem poprzednio znanych, opartych na: http://www.emgu.com/wiki/index.php/Download_And_Installation#The_type_initializer_for_.27Emgu.CV.CvInvoke.27_threw_an_exception.

Metoda ta zawiera się w prostej instrukcji:

Copy BOTH of the folders x86 AND x64 from /bin folder from Emgu installation folder to the Debug (Release) folder of your solution. 

Działa? działa.

Brak komentarzy:

Prześlij komentarz