Al intentar compilar un simple c++ test.cpp código con opencv 2.3.1 como de terceros
la biblioteca, me sale el siguiente mensaje de error:

Undefined symbols para la arquitectura x86_64:

«_cvLoadImage», hace referencia a de:

_main en la prueba.cpp.o

ld: símbolo(s) no se ha encontrado para la arquitectura x86_64

Por la info, voy a usar CMake para la vinculación, y gcc 4.2.1 i686-apple-darwin11
obtenido de Xcode 4.2. OpenCV se había instalado con CMake:

ccmake ../sourcecode

Nota por favor que me sale un mensaje similar al intentar compilar SoQt
(coin3D), después de comandos ./configure & sudo make:

.
.
.

«typeinfo para QWidget», hace referencia a partir de:
typeinfo para SoQtThumbWheelin SoQtThumbWheel.o
«QWidget::staticMetaObject», hace referencia a partir de:
SoQtThumbWheel::staticMetaObject en SoQtThumbWheel.o

ld: símbolo(s) no se ha encontrado para la arquitectura x86_64

collect2: ld devuelto 1 estado de salida

La CMakeLists.txt el proyecto principal es:

cmake_minimum_required(VERSION 2.8)    
PROJECT(TOTO )

FIND_PACKAGE(OpenCV)

INCLUDE_DIRECTORIES(${TOTO_SOURCE_DIR}/src/control)

SET(ALL_LIB_RAF  ${OPENCV_LIBRARIES}             
         Hello
          )

# FILEs to consider
ADD_SUBDIRECTORY(main) 
ADD_SUBDIRECTORY( src )

Mientras que el CMakeLists.txt para test.cpp es:

ADD_EXECUTABLE(helloWorld test)
TARGET_LINK_LIBRARIES(helloWorld ${ALL_LIB_RAF} )

Quizás el problema consiste en el hecho de que OpenCV necesita ser compilado en 64 bits (?). Me he encontrado un interesante enlace. Pero me pregunto ¿que alma se aplica a CMake.

Cualquier ayuda por favor?

Gracias.

OriginalEl autor Courier | 2012-05-23

2 Comentarios

  1. 4

    Este parece que no estás vinculación con la biblioteca correctamente. Hay al menos dos preguntas similares en stackoverflow que lidiar con este asunto, a saber, este y que uno. Hizo usted echa un vistazo a ellos? Además, sírvanse proporcionar más información acerca de cómo se está compilando. Puede compilar un simple OpenCV programa de prueba como ésta (tomado de su wiki):

    #include <cv.h>
    #include <highgui.h>
    
    int main ( int argc, char **argv )
    {
      cvNamedWindow( "My Window", 1 );
      IplImage *img = cvCreateImage( cvSize( 640, 480 ), IPL_DEPTH_8U, 1 );
      CvFont font;
      double hScale = 1.0;
      double vScale = 1.0;
      int lineWidth = 1;
      cvInitFont( &font, CV_FONT_HERSHEY_SIMPLEX | CV_FONT_ITALIC,
                  hScale, vScale, 0, lineWidth );
      cvPutText( img, "Hello World!", cvPoint( 200, 400 ), &font,
                 cvScalar( 255, 255, 0 ) );
      cvShowImage( "My Window", img );
      cvWaitKey();
      return 0;
    }
    Gracias por su respuesta. <\p> el código no compila bien. Vi a los dos enlaces. El problema es que soy de vinculación con CMake. <\p> yo creo que es necesario volver a compilar opencv con 64 bits. Por favor, ¿sabe usted cómo podemos hacerlo con CMake? I. e., que las banderas para especificar?
    He encontrado este enlace útil (stackoverflow.com/questions/5781198/…), Pero no encontré cómo se aplican a CMake
    Por favor, añadir un poco más de detalles a tu pregunta original. ¿Cómo intenta compilar el código de ejemplo? stackoverflow necesita más detalles para poder ayudarte.
    Para compilar y crear el build: ccmake ../proyecto-de origen. Yo no toque ninguna bandera.
    ¿Cómo quieres compilar el ejemplo de arriba con este comando? No hay CMakeLists.txt

    OriginalEl autor Gnosophilon

  2. 1

    Me genera este error cuando accidentalmente combinadas por separado target_link_libraries() en mi CMakeLists.txt archivo cuando se compila con cmake.

    Específicamente, tomé la correcta:

    target_link_libraries(
    GradientComputer
    )
    
    target_link_libraries(
    Overlap
    PointAreaComputer
    )

    y combinarlas para crear la incorrecta:

    target_link_libraries(
    GradientComputer
    Overlap
    PointAreaComputer
    )

    OriginalEl autor Arno Klein

Dejar respuesta

Please enter your comment!
Please enter your name here