Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 19471|Antwort: 0

[Quelle] "Der Typinitialisierer für 'Emgu.CV.CvInvoke' hat eine Ausnahme gemacht"?

[Link kopieren]
Veröffentlicht am 25.11.2015 10:57:59 | | |
Der Typinitialisierer für 'Emgu.CV.CvInvoke' hat eine Ausnahme angezeigt.
Wenn Sie diese Ausnahme sehen, prüfen Sie bitte Folgendes

Hast du MSVCRT installiert?
Für Version 2.0+ wird das mitgelieferte OpenCV 2.0-Binärsystem mit Visual Studio 2008 erstellt, du musst MSVCRT 9.0 SP1 installieren, um das Abhängigkeitsproblem zu lösen.
Für Version 1.5 ist die mitgelieferte OpenCV-Pre1.1-Binärdatei mit Visual Studio 2005 erstellt; du musst MSVCRT 8.0 SP1 installieren, um das Abhängigkeitsproblem zu lösen.
Hast du die OpenCV-DLLs ins Ausführungsverzeichnis kopiert?
Stelle sicher, dass die nicht verwalteten DLLs im Ausführungsverzeichnis sind.
Für die Emgu CV-Version <= 2.1 bedeutet dies folgende DLLs: cvXXX.dll, cvauxXXX.dll, cxcoreXXX.dll, highguiXXX.dll, opencv_ffmpegXXX.dll, mlXXX.dll andcvextern.dll wobei XXX das OpenCV ist Versionsnummer.
Für die Emgu CV-Version >= 2.2 bedeutet dies folgende 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 wobei XXX die OpenCV-Versionsnummer ist.
Der beste Weg, Ihr Projekt aufzubauen, ist:
Kopiere die nicht verwalteten DLLs in deinen Projektordner
Rechtsklick auf das Projekt, klicke auf Add->ExistingItem und wähle alle nicht verwalteten DLLs aus. Füge sie dem Projekt hinzu.
Für jede der enthaltenen DLLs klicke mit der linken Maustaste darauf, suche die Option "Copyto Output Directory" und wähle "Copy if newer" aus.
Nutzt du ein 32-Bit-Betriebssystem?
Der Windows-Installer ist nur für 32-Bit-Fenster verfügbar. Wenn Sie ein 64-Bit-Betriebssystem verwenden, gibt es drei mögliche Möglichkeiten, dieses Problem zu lösen:

Du kannst das 64-Bit-reine Binär-Zip-Paket fromsourceforge herunterladen und zu deinem Projekt hinzufügen.
Man kann OpenCV auch vom Quellcode für eine 64-Bit-Plattform neu kompilieren. Siehe die Anleitung zum Aufbau von SVN
Alternativ kannst du deine .NET-Anwendung dazu zwingen, im 32-Bit-Modus zu laufen, selbst auf einem 64-Bit-Betriebssystem. Dazu wählen Sie auf der Konfigurationsseite Ihres ausführbaren Projekts Platform Target als'x86' aus.
Fehlt dir eine Abhängigkeit?
Lade Dependency Walker herunter und nutze es, um die Datei "cvextern.dll" zu öffnen. Überprüfe, ob eine Abhängigkeit fehlt.

Ich habe alles oben überprüft, aber trotzdem die Ausnahme bekommen
In diesem Fall versuchen Sie bitte, die Beispiele zu erstellen und auszuführen. Nachdem Sie die Beispiele erstellt haben, versuchen Sie, das "Hello World"-Programm auszuführen.

Wenn "Hello World" problemlos läuft, vergleiche es mit youproject, finde den Unterschied in der Konfiguration und behebe es.

Wenn "Hello World", erhalte denselben "Typinitialisierer für'Emgu. CV.CvInvoke' hat eine Ausnahme geworfen." Versuche, die InnerException herauszufinden und sie im Diskussionsforum zu melden.



Typinitialisierung von Emgu. CV. cvinvoke 'put exceptions'.
Wenn Sie diese Ausnahme sehen, prüfen Sie bitte Folgendes
Hast du msvcrt installiert?
Version 2+, das beiliegende OpenCV 2 Binärsystem, dient dazu, Visual Studio 2008 zu bauen, und du musst edmsvcrt 9 SP1 installieren, um Abhängigkeitsprobleme zu beheben.
Für Version 1.5, dem beiliegenden OpenCV vor 1.1 binären Build Visual Studio 2005, müssen Sie edmsvcrt 8 SP1 installieren, um Abhängigkeitsprobleme zu beheben.
Das opencv DLL-Ausführungsverzeichnis, das du kopiert hast?
Stellen Sie sicher, dass die nicht verwaltete DLL im Ausführungsverzeichnis liegt.
Für die emgu CV-Version < = 2,1, was folgende DLL:cvxxx.dll,cvauxxxx.dll,cxcorexxx bedeutet. DLL, highguixxx.dll, opencv_ffmpegxxx.dll, mlxxx.dll andcvextern.dll wo xxx die Versionsnummern von opencv sind.
Für die emgu CV-Version> = 2,2 Das bedeutet, dass die folgende 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 ist die Opencvversion-Nummer.
Der beste Weg, Ihr Projekt aufzubauen, ist:
Unmanaged DLL in deinen Projektordner kopiert
Rechtsklicke auf das Projekt und wähle "Add-> existingelement, um alle nicht verwalteten DLLs auszuwählen. Füge sie dem Projekt hinzu.
Für jede darin enthaltene DLL klicke mit der linken Maustaste darauf, suche die Option "Verzeichnis kopieren und ausgeben" und wähle "Kopieren bei Aktualisierung" aus.
Betreibst du ein 32-Bit-Betriebssystem?
Windows Installer kann nur 32-Bit-Windows bereitstellen. Wenn Sie ein 64-Bit-Betriebssystem verwenden, gibt es drei mögliche Möglichkeiten, dieses Problem zu lösen:
Du kannst das 64-Bit-binäre Zip-Paket fromsourceforge herunterladen und zu deinem Projekt hinzufügen.
Man kann auch OpenCV-Quellen von 64-Bit-Plattformen kompilieren. Siehe die Gebäude-fromsvn-Richtlinie
Oder du kannst deinen erzwingen. .NET-Anwendungen laufen im 32-Bit-Modus, selbst auf 64-Bit-Betriebssystemen. Dazu wählen Sie auf der Konfigurationsseite Ihres Ausführungsprojekts das Plattformziel als 'x86" aus.
Fehlen dir irgendwelche Abhängigkeiten?
Lade Dependent Walker herunter und nutze es, um die "cvextern DLL-Datei" zu öffnen. ”。 Überprüfe, ob irgendwelche Abhängigkeiten fehlen.
Ich habe alles oben überprüft, aber ich habe immer noch Ausnahmen
Versuche in diesem Fall, eine Instanz zu bauen und auszuführen. Nachdem du die Instanz gebaut hast, versuche, das Hello World-Programm auszuführen.
Wenn Hello World problemlos läuft, vergleicht es sich mit youproject, findet strukturelle Unterschiede und löst sie.
Wenn "hello world" dasselbe bekommt, "typiere Anfangswertsetzer für'emgu". CV. cvinvoke" wirft eine Ausnahme. Nachricht, ich versuche OuttheInner Exception im Forum zu finden





Vorhergehend:Detailliertes Tutorial für 0 Yuanlu Xiaomi Armband und andere Produkte
Nächster:C# importiert und ruft Win32-API-Funktionen über DllImport auf
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com