OpenCV 2.3 编译问题 - 未定义参考 - Ubuntu 11.10

OpenCV 2.3 Compiling Issue - Undefined Refence - Ubuntu 11.10(OpenCV 2.3 编译问题 - 未定义参考 - Ubuntu 11.10)
本文介绍了OpenCV 2.3 编译问题 - 未定义参考 - Ubuntu 11.10的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

系统信息:Ubuntu 11.10(64 位)和 OpenCV 2.3(今天安装)

System Info: Ubuntu 11.10 (64 bits) with OpenCV 2.3 (installed today)

我正在尝试在 OpenCV 2.3 中编译一些非常简单的代码,但出现了一个奇怪的错误.

I'm trying to compile some very simple code in OpenCV 2.3 but I'm getting a weird error.

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

int main(){
  cv::Mat image=cv::imread("img.jpg");
  cv::namedWindow("My Image");
  cv::imshow("My Image",image);
  cv::waitKey(0);
  return 1;
}

但是,我收到了这些错误消息...

however, I'm getting these error messages...

-SG41:~/Desktop$ g++ `pkg-config opencv --cflags --libs` -o test_1 test_1.cpp 
/tmp/ccCvS1ys.o: In function `main':
test_1.cpp:(.text+0x44): undefined reference to `cv::imread(std::basic_string<char,    std::char_traits<char>, std::allocator<char> > const&, int)'
test_1.cpp:(.text+0x8e): undefined reference to `cv::namedWindow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
test_1.cpp:(.text+0xbc): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
test_1.cpp:(.text+0xf0): undefined reference to `cv::imshow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)'
test_1.cpp:(.text+0x112): undefined reference to `cv::waitKey(int)'
/tmp/ccCvS1ys.o: In function `cv::Mat::~Mat()':
test_1.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x39): undefined reference to `cv::fastFree(void*)'
/tmp/ccCvS1ys.o: In function `cv::Mat::release()':
test_1.cpp:(.text._ZN2cv3Mat7releaseEv[cv::Mat::release()]+0x47): undefined reference to `cv::Mat::deallocate()'
collect2: ld returned 1 exit status

推荐答案

我猜至少有一些库在

pkg-config opencv --libs

是档案库.将存档库放在需要它们的源之前是不正确的(在这种情况下为 test_1.cpp):链接行上源和库的顺序 很重要.

are archive libraries. It is incorrect to put archive libraries before sources that need them (test_1.cpp in this case): the order of sources and libraries on the link line matters.

试试

g++ -o test_1 test_1.cpp `pkg-config opencv --cflags --libs` 

这篇关于OpenCV 2.3 编译问题 - 未定义参考 - Ubuntu 11.10的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Linker returns quot;relocation has an invalid symbol at symbol index...quot;(链接器返回“重定位在符号索引处具有无效符号...)
Ambiguous call with overloaded r-value reference function(带有重载 r 值引用函数的模棱两可的调用)
Compile c++14-code with g++(用 g++ 编译 c++14 代码)
openCV program compile error quot;libopencv_core.so.2.4: cannot open shared object file: No such file or directoryquot; in ubuntu 12.04(openCV程序编译错误“libopencv_core.so.2.4:无法打开共享对象文件:没有这样的文件或目录在 Ubuntu 12.04 中)
gdb error not in executable format: File format not recognized(gdb 错误不是可执行格式:文件格式无法识别)
How to list exported functions in a shared lib on Ubuntu(如何在 Ubuntu 的共享库中列出导出的函数)