当尝试使用opencv 2.3.1编译一个简单的c ++ test.cpp代码时,作为第三个 库,我收到以下错误信息:
架构x86_64的未定义符号:
“_cvLoadImage”,引自:_main in test.cpp.o
ld:找不到架构x86_64
的符号
有关信息,我使用CMake进行链接,以及gcc 4.2.1 i686-apple-darwin11 从Xcode 4.2获得。使用CMake安装了OpenCV:
ccmake ../sourcecode
请注意,在尝试编译SoQt时,我收到类似的消息 (coin3D),命令后./configure& sudo make:
。 。 。
“QWidget的typeinfo”,引自: SoQtThumbWheelin SoQtThumbWheel.o的typeinfo “QWidget :: staticMetaObject”,引自: SoQtThumbWheel中的SoQtThumbWheel :: staticMetaObjectld:找不到架构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位(?)编译。我发现了一个有趣的link。但我想知道如何应用于CMake。
请帮忙吗?
感谢。
答案 0 :(得分:4)
这看起来好像没有正确链接到库。 stackoverflow上至少有两个类似的问题可以解决这个问题,即this one和that one。你看看他们了吗?此外,请提供有关您正在编译的 的更多信息。你能编译一个简单的OpenCV测试程序,比如这个(取自their 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;
}
答案 1 :(得分:1)
在使用cmake进行编译时,我在CMakeLists.txt文件中意外地将单独的target_link_libraries()组合在一起时生成了此错误。
具体来说,我采取了正确的方法:
target_link_libraries(
GradientComputer
)
target_link_libraries(
Overlap
PointAreaComputer
)
并将它们组合起来以创建错误:
target_link_libraries(
GradientComputer
Overlap
PointAreaComputer
)