静态OpenCV库中未定义的引用 我有一个C++项目,使用OpenCV 3.1,使用共享的LIBA程序工作得很好。但现在我想使用静态库(位于项目目录中的一个文件夹中)编译它,因为我希望能够在未安装OpenCV的地方导出它(并在必要时进行编辑和重新编译)
这次我重新编译了OpenCV,将共享库设置为否:静态OpenCV库中未定义的引用 我有一个C++项目,使用OpenCV 3.1,使用共享的LIBA程序工作得很好。但现在我想使用静态库(位于项目目录中的一个文件夹中)编译它,因为我希望能够在未安装OpenCV的地方导出它(并在必要时进行编辑和重新编译),c++,opencv,ubuntu,static-libraries,opencv3.1,C++,Opencv,Ubuntu,Static Libraries,Opencv3.1,这次我重新编译了OpenCV,将共享库设置为否: make -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=NO -DCMAKE_INSTALL_PREFIX=~/Desktop/ocv .. 然后我取了我需要的图书馆: libopencv_core.a libopencv_imgproc.a libopencv_highgui.a libopencv_video.a libopencv_imgcodecs.a libopencv_v
make -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=NO -DCMAKE_INSTALL_PREFIX=~/Desktop/ocv ..
然后我取了我需要的图书馆:
libopencv_core.a libopencv_imgproc.a libopencv_highgui.a
libopencv_video.a libopencv_imgcodecs.a libopencv_videoio.a
并运行g++a.cpp libopencv_core.a
其中a.cpp
是一个示例程序,用于测试是否一切正常:
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat a;
printf("hello world\n" );
return 0;
}
等等。我找遍了,找不到丢失的东西。非常感谢您的帮助
p、 s.G++和Ubuntu版本:
G++(Ubuntu 4.8.4-2ubuntu1~14.04.3)4.8.4
您还需要链接pthread库。并将其作为-pthread
g++ a.cpp libopencv_core.a -pthread
您缺少包含所需代码的其他库。必须有一个libippicv.a
,其中包含ippicv*
函数的代码
g++ a.cpp libopencv_core.a libippicv.a -pthread
它应该在第三方LIB中的某个位置 @user3286661我搜索并添加了它,但像往常一样,我必须查找一些gz-lib-->libopencv_-core.a(persistence.cpp.o):在函数
icvPuts(CvFileStorage*,char-const*)”:persistence.cpp:(.text.\uzl7icvputsp13cvfilestoragepkc+0x22b):对gzputs'@Leo的未定义引用您现在可能需要libgzip了。此外,指定库的顺序也很重要。所以也许你也应该看看这个。当其他人读到这篇文章时,@LeonardoLanchas正在做一个静态构建。因此,他不仅要链接静态opencv库,还要链接opencv所需的第三方库。从错误中,猜测下一步需要哪个库,添加它,您将看到错误将减少。
g++ a.cpp libopencv_core.a libippicv.a -pthread