当试图以opencv 2.3.1作为第三个库编译一个简单的c++ test.cpp代码时,我会得到以下错误消息:
架构x86_64的未定义符号: "_cvLoadImage",引用自: _main中的test.cpp.o ld:在体系结构x86_64中找不到符号
有关信息,am使用CMake链接,gcc 4.2.1i686-apple-darwin11 11从Xcode 4.2获得。OpenCV是使用CMake安装的:
ccmake ../源代码
请注意,在尝试编译SoQt (coin3D)时,在命令之后,我会收到类似的消息。/configure& sudo:
。。。 “QWidget的类型信息”,引用于: SoQtThumbWheelin SoQtThumbWheel.o "QWidget::staticMetaObject",引用于: SoQtThumbWheel.o中的staticMetaObject 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 )而CMakeLists.txt for test.cpp是:
ADD_EXECUTABLE(helloWorld test)
TARGET_LINK_LIBRARIES(helloWorld ${ALL_LIB_RAF} )也许问题在于OpenCV需要用64位(?)编译。我发现了一个有趣的链接。但我想知道如何将这一点应用于CMake。
有什么帮助吗?
谢谢。
发布于 2012-05-23 18:44:48
这看起来好像您没有正确地链接到库。在处理此问题的堆栈溢出中至少有两个类似的问题,即这一个和就是那个。你看过他们了吗?此外,请提供更多关于你是如何编译的信息。您能否编译一个简单的OpenCV测试程序,比如这个(取自他们的维基):
#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;
}发布于 2016-03-17 14:21:00
当我使用cmake编译时,意外地将单独的target_link_libraries()组合到我的CMakeLists.txt文件中时,就产生了这个错误。
具体来说,我采取了正确的:
target_link_libraries(
GradientComputer
)
target_link_libraries(
Overlap
PointAreaComputer
)并将它们组合在一起创建不正确的:
target_link_libraries(
GradientComputer
Overlap
PointAreaComputer
)https://stackoverflow.com/questions/10725339
复制相似问题