4

3 番目のライブラリとして opencv 2.3.1 を使用して単純な c++ test.cpp コードをコンパイルしようとすると、次のエラー メッセージが表示されます。

アーキテクチャ x86_64 の未定義のシンボル:

「_cvLoadImage」、次から参照:

test.cpp.o の _main

ld: アーキテクチャ x86_64 のシンボルが見つかりません

情報については、リンクに CMake を使用しており、Xcode 4.2 から取得した gcc 4.2.1 i686-apple-darwin11 を使用しています。OpenCV は CMake を使用してインストールされています。

ccmake ../ソースコード

コマンド ./configure & sudo make の後に、SoQt (coin3D) をコンパイルしようとすると、同様のメッセージが表示されることに注意してください。

. . .

「QWidget の typeinfo」、参照元: SoQtThumbWheelin SoQtThumbWheel.o の typeinfo 「QWidget::staticMetaObject」、参照元: SoQtThumbWheel::staticMetaObject in SoQtThumbWheel.o

ld: アーキテクチャ x86_64 のシンボルが見つかりません

collect2: ld が 1 つの終了ステータスを返しました

メイン プロジェクトの CMakeLists.txt は次のとおりです。

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 )

test.cpp の CMakeLists.txt は次のとおりです。

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

おそらく問題は、OpenCV を 64 ビット (?) でコンパイルする必要があるという事実にあります。興味深いリンクを見つけました。しかし、それが CMake にどのように適用されるのか疑問に思っています。

何か助けてください。

ありがとう。

4

2 に答える 2

4

これは、ライブラリに対して正しくリンクしていないようです。この問題に対処するスタックオーバーフローには、少なくとも 2 つの同様の質問があります。つまり、this onethat oneです。あなたはそれらを見ましたか?さらに、コンパイル方法に関する詳細情報を提供してください。このような単純な OpenCV テスト プログラムをコンパイルできますか ( 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;
}
于 2012-05-23T18:44:48.487 に答える