Opencv编译好了动态链接库和静态链接库。用Qt加载动态链接库的时候能正常运行,可是换成加载静态链接库的时候就出现一大堆undefined reference的错误:

/z-plan/imagepro/comfunction.o:: In function `comfunction::qimageToipl()':

/z-plan/imagepro/comfunction.cpp:: error: undefined reference to `cvCreateImageHeader'

/z-plan/imagepro/comfunction.o:: In function `comfunction::loadImage(QString&)':

/z-plan/imagepro/comfunction.cpp:: error: undefined reference to `cvCreateImageHeader'

/z-plan/imagepro/../../usr/local/local/lib//libcv.a(cvcolor.o):: In function `cvCvtColor':

/opencv-1.0.0/cv/src/cvcolor.cpp:2251: error: undefined reference to `cvGetMat'

/opencv-1.0.0/cv/src/cvcolor.cpp:2255: error: undefined reference to `cvError'

一共有两百多个这样的错误。请问各位大神这个问题如何破?

系统是CentOS5.3,qt-4.7. OpenCV-1.0.0  qt用的是静态编译,OpenCV安装路径下的lib文件夹下有.so和.a的链接库文件。静态编译应该没有问题,我在没装Qt的机器上能运行静态编译出来的程序。

|

注意静态链接是的命令行次序问题,一般:

gcc -o test test.o -L. -static -lxxx

|

就是这样的,引用头文件的顺序 也有讲究。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐