Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 19471|Antwoord: 0

[Bron] "De type-initialisator voor 'Emgu.CV.CvInvoke' gaf een uitzondering"?

[Link kopiëren]
Geplaatst op 25-11-2015 10:57:59 | | |
De type-initializer voor 'Emgu.CV.CvInvoke' gooide een uitzondering.
Als je deze uitzondering ziet, controleer dan het volgende

Heb je MSVCRT geïnstalleerd?
Voor versie 2.0+ is de meegeleverde OpenCV 2.0-binaire versie gebouwd met Visual Studio 2008; je moet MSVCRT 9.0 SP1 installeren om het afhankelijkheidsprobleem op te lossen.
Voor versie 1.5 is de meegeleverde OpenCV pre1.1-binaire versie gebouwd met Visual Studio 2005, je moet MSVCRT 8.0 SP1 installeren om het afhankelijkheidsprobleem op te lossen.
Heb je de OpenCV-dll's gekopieerd naar de execution-directory?
Zorg ervoor dat de onbeheerde DLL's in de uitvoeringsmap staan.
Voor Emgu CV-versie <= 2.1 betekent dit de volgende dll's: cvXXX.dll, cvauxXXX.dll, cxcoreXXX.dll, highguiXXX.dll, opencv_ffmpegXXX.dll, mlXXX.dll andcvextern.dll waarbij XXX de OpenCV is versienummer.
Voor Emgu CV-versie >= 2.2 betekent dit de volgende dlls: opencv_calib3dXXX.dll, opencv_contribXXX.dll,opencv_coreXXX.dll, opencv_features2dXXX.dll,opencv_highguiXXX.dll, opencv_ imgprocXXX.dll, opencv_legacyXXX.dll,opencv_mlXXX.dll, opencv_objectdetectXXX.dll,opencv_videoXXX.dll waarbij XXX het OpenCVversienummer is.
De beste manier om je project op te zetten is:
Kopieer de niet-beheerde DLL's naar je projectmap
Klik met de rechtermuisknop op het project, klik op Add->ExistingItem en selecteer alle niet-beheerde DLL's. Voeg ze toe aan het project.
Voor elk van de inbegrepen DLL's linksklikt u erop, zoekt u de optie "Copyto Output Directory" en selecteert u "Copy if newer"
Gebruik je een 32-bit besturingssysteem?
De Windows-installer is alleen beschikbaar voor 32-bit vensters. Als je een 64-bit besturingssysteem gebruikt, zijn er drie mogelijke manieren om dit probleem op te lossen:

Je kunt het 64-bits binaire zip-pakket van sourceforge downloaden en aan je project toevoegen.
Je kunt OpenCV ook opnieuw compileren vanaf de bron voor een 64-bit platform. Zie de instructie voor het bouwen van SVN
Je kunt ook je .NET-applicatie dwingen om in 32-bit-modus te draaien, zelfs op een 64-bit besturingssysteem. Om dit te doen, selecteer je op de configuratiepagina van je uitvoerbare project Platform Target als'x86'.
Mis je een afhankelijkheid?
Download Dependency Walker en gebruik het om het bestand "cvextern.dll" te openen. Controleer of er een afhankelijkheid ontbreekt.

Ik heb alles hierboven gecontroleerd, maar ik heb nog steeds de uitzondering gekregen
Probeer in dit geval alsjeblieft de voorbeelden te bouwen en te draaien. Na het opbouwen van de voorbeelden probeer je het "Hello World"-programma te draaien.

Als "Hello World" zonder problemen draait, vergelijk het dan met youproject, zoek het verschil in configuratie en los het op.

Als "Hello World" hetzelfde is, krijg je dezelfde "De type-initializer voor Emgu. CV.CvInvoke' heeft een uitzondering gegooid." bericht, probeer outtheInnerException te vinden en rapporteer het aan het discussieforum



Type-initialisatie van EMGU. CV. cvinvoke 'put exceptions'.
Als je deze uitzondering ziet, controleer dan het volgende
Heb je msvcrt geïnstalleerd?
Versie 2+, meegeleverd opencv 2 binary, is bedoeld om Visual Studio 2008 te bouwen, en je zult edmsvcrt 9 SP1 moeten installeren om afhankelijkheidsproblemen op te lossen.
Voor versie 1.5, meegeleverd OpenCV pre1.1 binaire build Visual Studio 2005, moet je edmsvcrt 8 SP1 installeren om afhankelijkheidsproblemen op te lossen.
De opencv DLL-uitvoeringsmap die je hebt gekopieerd?
Zorg ervoor dat de onbeheerde DLL in de uitvoeringsmap staat.
Voor de emgu CV-versie< = 2.1, wat betekent de volgende DLL:cvxxx.dll,cvauxxxx.dll,cxcorexxx. DLL, highguixxx.dll, opencv_ffmpegxxx.dll, mlxxx.dll andcvextern.dll waarbij xxx de versienummers van opencv zijn.
Voor de emgu CV-versie> = 2,2 Dit betekent dat de volgende DLL:opencv_calib3dxxx.dll, opencv_contribxxx. DLL,opencv_corexxx.dll,opencv_features2dxxx。 DLL,opencv_highguixxx.dll,opencv_imgprocxxx.dll,opencv_legacyxxx。 DLL,opencv_mlxxx.dll,opencv_objectdetectxxx。 DLL, opencv_videoxxx.dll XXX is het opencvversie-nummer.
De beste manier om je project op te bouwen is:
Onbeheerde DLL gekopieerd naar je projectmap
Klik met de rechtermuisknop op het project en klik op Add-> existingitem om alle niet-beheerde DLL's te selecteren. Voeg ze toe aan het project.
Voor elke DLL die het bevat, klik je er met de linkermuisknop op, zoek je de optie "Copy & Output Directory" en selecteer je "Copy if updated"
Gebruik je een 32-bit besturingssysteem?
Windows Installer kan alleen 32-bit Windows leveren. Als je een 64-bit besturingssysteem gebruikt, zijn er drie mogelijke manieren om dit probleem op te lossen:
Je kunt het 64-bits binaire zip-pakket van sourceforge downloaden en aan je project toevoegen.
Je kunt ook OpenCV-bronnen compileren vanaf 64-bit platforms. Zie de richtlijn van het gebouw van Fromsvn
Of je kunt de jouwe forceren. .NET-applicaties draaien in 32-bits modus, zelfs op 64-bit besturingssystemen. Om dit te doen, selecteer je op de configuratiepagina van je uitvoeringsproject het platformdoel als 'x86".
Mis je afhankelijkheden?
Download Dependent Walker en gebruik deze om het "cvextern DLL-bestand" te openen. ”。 Controleer of er afhankelijkheden ontbreken.
Ik heb alles hierboven gecontroleerd, maar ik heb nog steeds uitzonderingen
Probeer in dit geval een instantie te bouwen en draaien. Probeer na het bouwen van de instantie het Hello World-programma te draaien.
Als Hello World zonder problemen draait, vergelijkt het met youproject, vindt het structurele verschillen en lost het op.
Als "hello world" dezelfde "type initial value setter for'emgu" krijgt. CV. cvinvoke" geeft een uitzondering. bericht, op zoek naar de innerlijke uitzondering op het forum





Vorig:Gedetailleerde tutorial voor 0 Yuanlu Xiaomi armband en andere producten
Volgend:C# importeert en roept Win32 API-functies aan via DllImport
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com