Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 19471|Respuesta: 0

[Fuente] "¿El inicializador de tipo para 'Emgu.CV.CvInvoke' hizo una excepción"?

[Copiar enlace]
Publicado en 25/11/2015 10:57:59 | | |
El inicializador de tipo para 'Emgu.CV.CvInvoke' lanzó una excepción.
Si ves esta excepción, por favor revisa lo siguiente

¿Has instalado MSVCRT?
Para la versión 2.0+, el binario OpenCV 2.0 incluido se compila con Visual Studio 2008, necesitarás instalar MSVCRT 9.0 SP1 para resolver el problema de dependencia.
Para la versión 1.5, el binario OpenCV pre1.1 incluido se compila con Visual Studio 2005, necesitarás instalar MSVCRT 8.0 SP1 para resolver el problema de dependencia.
¿Has copiado las DLL de OpenCV al directorio de ejecución?
Asegúrate de que las DLLs no gestionadas estén en el directorio de ejecución.
Para la versión de Emgu CV <= 2.1, esto significa las siguientes dlls: cvXXX.dll, cvauxXXX.dll, cxcoreXXX.dll,highguiXXX.dll, opencv_ffmpegXXX.dll, mlXXX.dll andcvextern.dll donde XXX es el OpenCV Número de versión.
Para la versión CV de Emgu >= 2.2 esto significa las siguientes 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 donde XXX es el número de versión de OpenCV.
La mejor manera de configurar tu proyecto es:
Copia las DLLs no gestionadas a la carpeta de tu proyecto
Haz clic derecho en el proyecto, haz clic en Añadir >Elemento Existente y selecciona todas las DLLs no gestionadas. Añádelas al proyecto.
Para cada una de las DLLs incluidas, haz clic izquierdo sobre ella, busca la opción "Copiar a Directorio de Salida" y selecciona "Copiar si es nuevo"
¿Estás usando un sistema operativo de 32 bits?
El instalador de Windows solo está disponible para ventanas de 32 bits. Si usas un sistema operativo de 64 bits, hay tres posibles formas de resolver este problema:

Puedes descargar el paquete zip solo binario de 64 bits desde sourceforge y añadirlo a tu proyecto.
También puedes recompilar OpenCV desde el código fuente para una plataforma de 64 bits. Consulta la instrucción para construir desde SVN
Alternativamente, puedes forzar que tu aplicación .NET funcione en modo de 32 bits, incluso en un sistema operativo de 64 bits. Para ello, en la página de configuración de tu proyecto ejecutable, selecciona Objetivo de plataforma como 'x86'.
¿Te falta alguna dependencia?
Descarga Dependency Walker y úsalo para abrir el archivo "cvextern.dll". Comprueba si falta alguna dependencia.

He comprobado todo lo anterior pero aún así me salió la excepción
En este caso, por favor intenta construir y ejecutar los ejemplos. Después de construir los ejemplos, intenta ejecutar el programa "Hola Mundo".

Si "Hello World" funciona sin ningún problema, compáralo con youproject, encuentra la diferencia en la configuración y arréglalo.

Si "Hello World" recibe el mismo "El inicializador de tipo para'Emgu. CV.CvInvoke' lanzó una excepción., intenta encontrar el mensaje de InnerException y repórtalo en el foro de discusión



inicialización de tipo de emgu. CV. Poner excepciones.
Si ves esta excepción, por favor revisa lo siguiente
¿Has instalado msvcrt?
La versión 2+, incluido en el binario OpenCV 2, es para compilar Visual Studio 2008, y necesitarás instalar edmsvcrt 9 SP1 para resolver problemas de dependencias.
Para la versión 1.5, OpenCV pre-1.1 binary build de Visual Studio 2005, necesitarás instalar edmsvcrt 8 SP1 para resolver problemas de dependencia.
¿El directorio de ejecución de DLL de OpenCV que copiaste?
Asegúrate de que la DLL no gestionada esté en el directorio de ejecución.
Para la versión CV de emgu< = 2.1, lo que significa los siguientes DLL:cvxxx.dll,cvauxxxx.dll,cxcorexxx. DLL, highguixxx.dll, opencv_ffmpegxxx.dll mlxxx.dll andcvextern.dll donde xxx son los números de versión de opencv.
Para la versión CV de emgu> = 2.2 Esto significa que la siguiente 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 es el número de opencvversion.
La mejor manera de construir tu proyecto es:
DLL no gestionado copiado a la carpeta de tu proyecto
Haz clic derecho en el proyecto y haz clic en Añadir > elemento existente para seleccionar todas las DLLs no gestionadas. Añádelos al proyecto.
Para cada DLL que contiene, haz clic izquierdo sobre ella, busca la opción "Copiar y Exportar Directorio" y seleccionar "Copiar si se actualiza"
¿Usas un sistema operativo de 32 bits?
El instalador de Windows solo puede ofrecer Windows de 32 bits. Si usas un sistema operativo de 64 bits, hay tres posibles formas de resolver este problema:
Puedes descargar el paquete zip solo binario de 64 bits de FromSourceForge y añadirlo a tu proyecto.
También puedes compilar fuentes OpenCV desde plataformas de 64 bits. Ver la directiva de edificios desde svn
O puedes forzar el tuyo. Las aplicaciones .NET funcionan en modo de 32 bits, incluso en sistemas operativos de 64 bits. Para ello, en la página de configuración de tu proyecto de ejecución, selecciona el objetivo de plataforma como 'x86".
¿Te falta alguna dependencia?
Descarga Dependent Walker y úsalo para abrir el "archivo DLL cvextern." ”。 Comprueba si falta alguna dependencia.
He comprobado todo lo anterior pero aún tengo excepciones
En este caso, prueba a construir y ejecutar una instancia. Después de construir la instancia, prueba a ejecutar el programa Hello World.
Si Hello World funciona sin problemas, se compara con tu proyecto, encuentra diferencias estructurales y las resuelve.
Si "hello world" recibe el mismo "asignador inicial de valor de tipo para emgu". CV. cvinvoke" hace una excepción. mensaje, intentando encontrar la excepción interna del foro





Anterior:Tutorial detallado para la pulsera Xiaomi 0 Yuanlu y otros productos
Próximo:C# importa y llama funciones de la API de Win32 mediante DllImport
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com