Estoy tratando de construir OpenCV 2.4.6 en Windows 8 en Visual Studio 2012. Después de haber descargado la fuente de https://github.com/Itseez/opencv puedo generar (dejando la configuración por defecto) el uso de cmake y, a continuación, cargar el archivo resultante ALL_BUILD.vcxproj en Visual Studio 2012. Yo intente construir. Algunos de los módulos de hecho, construcción (por ejemplo, core, flann, imgproc, …), pero estoy tratando de construir highgui así que puedo usar el archivo PDB para la depuración mi código (que no se puede abrir un archivo de vídeo). Los errores de compilación empezar con este y muchos errores similares:

error C2039: ‘max’ : no es un miembro de ‘std’ C:\OpenCV2.4.6\3rdparty\openexr\Imath\ImathMatrixAlgo.cpp 1094 1 IlmImf

Una solución para errores como este (por ejemplo, en esta respuesta) es agregar #include <algorithm> a la falta de archivos. Traté de que en un par de archivos y parece que funciona, pero estoy nervioso acerca localmente cambiar la fuente de una biblioteca popular. Se debe construir en Windows (se puede descargar los archivos binarios, aunque no los archivos PDB, de el OpenCV sitio de sourceforge) así que me gustaría entender cómo construir en mi máquina sin necesidad de cambiar la fuente.

Que me estoy perdiendo de algo en la configuración? Hay alguna configuración de ruta, etc. falta en mi máquina? ¿Por qué tengo estos errores y cómo puedo solucionarlo?

========== EDITAR ==========

Mirando la ruta del directorio de esto parece ser un problema con uno de la 3ª parte de las dependencias, OpenEXR. Buscando en Github parece ser la versión 1.7.1 de OpenEXR que se utiliza en OpenCV 2.4.6. Las instrucciones en el OpenCV del Inicio Rápido La instalación en Windows estado:

  • En el caso de los Eigen de la biblioteca es de nuevo un caso de descargar y extraer el D:/OpenCV/dep directorio.
  • Igual que el anterior con OpenEXR.

lo que he descargado el OpenEXR 1.7.1 la liberación del código fuente y extrae los archivos resultantes de poner el directorio openexr-1.7.1 en C:\OpenCV2.4.6\dep.

Entonces corrí cmake y trató de construir la resultante de solución de Visual Studio. Tristemente veo los mismos errores.

  • Creo que sé lo que hice mal: voy a tener que instalar la tercera parte de las dependencias, en lugar de confiar en sus archivos en el OpenCV directorios. Estoy tratando de salir de OpenEXR a ver si instalando que la primera ayuda. Me deseo suerte!
  • Trate de #define NOMINMAX
  • Donde iba a poner eso?
InformationsquelleAutor dumbledad | 2013-10-18

2 Comentarios

  1. 79

    Yo tropezaba en el mismo problema al compilar OpenEXR. Entonces me encontré con la solución de google para openexr std::min.

    Hay un problema abierto en OpenCV, donde dice que, cuando el uso de VS2013 de vista previa, debe agregar la línea #include <algorithm> en el archivo donde estés usando std::min y std::max.

    Puedo poner esta línea en los archivos donde se llama a estos métodos y voilà! Compilación de éxito.

    • Gracias por este @Shodan. Hasta ahora me he resistido a cambiar los archivos de origen. Pensé que esta es una biblioteca popular con un montón de gente edificio en Windows por lo que debe ser una correcta revisión que no implica el archivo de origen de las ediciones. Pero su referencia a un OpenCV informe de errores me ha convencido 🙂 @akazakov tiene un buen indicio de cómo/dónde agregar #include <algorithm> más en otra respuesta.
    • Es curioso que muchos de los problemas que estoy enfrentando la construcción de OpenCV localmente sólo se enfrentan a otros que están utilizando Visual Studio 2013, mientras que yo estoy usando Visual Studio 2012, pero voy a tratar de no preocuparse acerca de eso.
    • mi placer @dumbledad 🙂
  2. 8

    Usted probablemente necesita #define NOMINMAX. Intenta ponerlo antes que cualquier otro incluye.

    Si que ayuda, a continuación, poner en el proyecto define el preprocesador.

    Hay un montón de info acerca de esto, sólo la búsqueda de NOMINMAX. Aquí tienes un post sobre ello.

    • Como ya he mencionado que no desea editar los archivos, ya que esta es una descarga de una biblioteca popular. Debe ser posible llegar a construir (como los autores seguramente lo hizo) sin modificaciones, o bien las modificaciones a sí mismos ya estaría en el código?
    • Usted necesidad de poner en tu proyecto, no el lib. Este es un MSVC cosa.
    • No tengo un proyecto que estoy tratando de construir la biblioteca Opencv como descargar desde su github
    • He añadido el /D NOMINMAX bandera por la la adición de NOMINMAX a las páginas de propiedades de uno de los proyectos que fracasan llmlmf bajo Configuration Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions pero mejoramiento, el proyecto aún da errores como C2039: 'max' : is not a member of 'std' y C3861: 'max': identifier not found
    • Lo siento, no sé, a continuación, envíe su pregunta aquí: answers.opencv.org/questions
    • Gracias por tratar de Adi, que he publicado allí cuando he publicado aquí también: answers.opencv.org/question/22669/…

Dejar respuesta

Please enter your comment!
Please enter your name here