C++ OpenCV 3.1升级导致Linux上的链接器错误
我最近通过以下方式从OpenCV 2.4.11升级到OpenCV 3.1。这个sudomake安装似乎已经成功运行,当我运行pkg-config--modversion-opencv时,我得到了相应的版本(3.1.0) 但由于某些原因,我现在遇到了链接器错误,即使是简单的程序也无法编译,例如: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
#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,但该文件不存在。正在调试。。。