Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenCV 3.1升级导致Linux上的链接器错误_C++_Linux_Opencv_Cmake_Linker Errors - Fatal编程技术网

C++ OpenCV 3.1升级导致Linux上的链接器错误

C++ OpenCV 3.1升级导致Linux上的链接器错误,c++,linux,opencv,cmake,linker-errors,C++,Linux,Opencv,Cmake,Linker Errors,我最近通过以下方式从OpenCV 2.4.11升级到OpenCV 3.1。这个sudomake安装似乎已经成功运行,当我运行pkg-config--modversion-opencv时,我得到了相应的版本(3.1.0) 但由于某些原因,我现在遇到了链接器错误,即使是简单的程序也无法编译,例如: #include <opencv2/opencv.hpp> using namespace cv; int main(int argc, char* argv[]) { Mat im

我最近通过以下方式从OpenCV 2.4.11升级到OpenCV 3.1。这个sudomake安装似乎已经成功运行,当我运行pkg-config--modversion-opencv时,我得到了相应的版本(3.1.0)

但由于某些原因,我现在遇到了链接器错误,即使是简单的程序也无法编译,例如:

#include <opencv2/opencv.hpp>

using namespace cv;

int main(int argc, char* argv[])
{
   Mat im1 = imread(argv[1]);
   return 0;
}
#包括
使用名称空间cv;
int main(int argc,char*argv[])
{
Mat im1=imread(argv[1]);
返回0;
}
返回错误:

main.cpp:-1:错误:未定义对cv::imread(cv::String const&,int)的引用

main.cpp:-1:错误:未定义对“cv::String::allocate(无符号长)”的引用

main.cpp:-1:错误:未定义对“cv::String::deallocate()”的引用

:-1:错误:收集2:错误:ld返回1退出状态


这可能是由于与以前的安装冲突造成的吗?在我浏览并开始手动删除/usr/local/[lib | include | bin]中的文件之前,我想我应该先问一下这里。有什么建议吗?

您的链接器路径可能是错误的。确保您想要的opencv是链接器路径上的第一个,否则它可能会链接到错误的opencv。删除opencv2可能会解决这个问题。。。考虑将来使用一个包管理器,这样你就不会有这样的混乱来应付了。

< p>我走了进来,拿起了核选项(SUDO RM后面跟着SUDO make安装),现在所有的东西都被编译了。我并不为此感到自豪,也不一定主张这样做,但如果其他任何人达到这种绝望的地步,你可能会发现这个杀人日志很有用:

sudo rm -r /usr/share/opencv
sudo rm -r /usr/share/OpenCV/
sudo rm -r /usr/local/include/opencv
sudo rm -r /usr/local/bin/opencv*
sudo rm -r /usr/local/share/OpenCV/
sudo rm -r /usr/local/lib/libopencv_*
sudo rm    /usr/local/lib/pkgconfig/opencv.pc
sudo rm    /usr/local/lib/python2.7/dist-packages/cv2.so

以防万一还有其他东西,我只会删除
/usr/local/lib
/usr/local/include
中的
opencv
东西。谢谢,我正在关注这条线索,希望这能解决它。OpenCV 3.1库首先出现在链接器路径中,但该路径中也有一些2.4.8库。当我将这些文件移动到“脱机”位置(从/usr/lib/x86_64-linux-gnu)时,我得到一个错误:导入的目标“opencv_core”引用文件libopencv_core.so.2.4.8,但该文件不存在。正在调试。。。