当前位置: 首页 > 知识库问答 >
问题:

libopencv_内核。所以2.4:添加符号时出错:命令行中缺少DSO

东方乐
2023-03-14

我已经在Ubuntu 16.04上安装了OpenCV 3.3.0。只想编译这段代码。

#include <iostream>
using namespace std;
#include "opencv2/opencv.hpp"
#include "opencv2/gpu/gpu.hpp"
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <cmath>

using namespace cv;

int main(int argc, char* argv[])
{
    try
    {
        int kernel_size = 3;
        cv::Mat src_host = cv::imread("crack2.jpg");
        cv::Mat gray_img, avg, kernel;
        cv::gpu::GpuMat dst, src;
        src.upload(src_host);

        cv::gpu::threshold(src, dst, 128.0, 255.0, CV_THRESH_BINARY);

        cv::Mat result_host;
        dst.download(result_host);

        std::cout<< "Done!!!" <<std::endl;

    }catch(const cv::Exception& ex)
    {
        std::cout<<"Error: " << ex.what() << std::endl;
    }
    return 0;
}

g-o主gpu_阈值。cpp“pkg config opencv--cflags--libs'-lopencv\u gpu-lopencv\u核心

g-L/usr/local/lib-o主gpu\U阈值。cpp“pkg config opencv--cflags--libs'-lopencv\u gpu-lopencv\u核心

我试图用这些方法编译它,但仍然给出相同的警告和错误。

/usr/bin/ld:警告:libopencv_core。所以2.4,需要/usr/lib/gcc/x86_64-linux-gnu/5/./..//x86_64-linux-gnu/libopencv_gpu。因此,可能与libopencv_核心冲突。所以3.3/usr/bin/ld:/tmp/ccdhLGL0。o: 未定义对符号“\u ZN2cv3gpu6GpuMat7releaseEv”//usr/lib/x86\u 64-linux-gnu/libopencv\u core的引用。所以2.4:添加符号时出错:命令行集合中缺少DSO 2:错误:ld返回1退出状态

我该怎么办?

共有1个答案

万高轩
2023-03-14

OpenCV 3.3中没有opencv2/gpu/gpu.hpp。如果您的代码编译,则意味着您的机器上同时有OpenCV 2.4和3.3。

在OpenCV 3.3中,包括:

#include <opencv2/core/cuda.hpp>

然后使用

cv::cuda::GpuMat img;

请参阅此处的详细信息。

编辑:我刚刚注意到你的编译方法。当使用pkg-config-opencv-cflags-libs时,您不再需要手动添加libopencv文件。

只需要做:g-o maingpu_thresh.cpp'pkg-config opencv--c标志--libs'

 类似资料:
  • 问题内容: 最近,我不得不在PC上重新安装Linux Mint。我重新安装了所有库,例如GLFW,并遇到了从未见过的错误。不幸的是,由于无法找到对我有用的修复程序,我的google- fu技能似乎无法弥补这个错误。旁注:这些程序在我的旧安装中可以很好地编译,并且在运行Linux Mint 17.2的笔记本电脑上也可以完美地编译。 这是我用来编译的编译语句: 这是终端向我吐出的东西: 所以,如果有人

  • 问题内容: 我正在尝试像这样编译C ++程序: 但是我收到以下错误: 我不知道这个错误是什么意思。任何帮助将不胜感激。 问题答案: DSO在这里表示动态共享对象;由于错误消息指出命令行中缺少该消息,因此我想您必须将其添加到命令行中。 也就是说,尝试添加到命令行。

  • 问题内容: 我对使用Windows的Linux(使用Ubuntu 14.04 LTS 64位)非常陌生,并且正尝试移植到我现有的CUDA项目上。 通过链接时 我遇到以下错误: 答案似乎与本文中的解决方案密切相关(奇怪的链接错误:命令行中缺少DSO),尽管鉴于我对Linux的经验不足,所以我无法使其适应我的问题。 关于可能的问题有什么想法? 这是编译期间的完整输出:https : //gist.gi

  • 下面是完整的输出:-

  • 我从卡拉夫那里得到以下消息: 我不明白这个错误意味着什么问题在哪里 我使用的是karaf 4.0.10版,运行的是,我想安装自定义business defa数据库。我希望有人能解释一下这个错误是什么意思。我仔细检查了maven存储库中提到的ojdbc8_12.2.0.1.0_ojdbc8-12.2.0.1.0。走对了路。

  • 问题内容: 我需要使用ProcessBuilder构建以下命令: 我尝试使用以下代码: 但是,这会将以下内容传递给系统(已使用Sysinternals Process Monitor进行了验证) 注意前面的引号和后面的两个引号。我需要除去那些多余的引号,因为它们会使调用失败。有谁知道如何做到这一点? 问题答案: 据我了解,由于ProcessBuilder不知道如何将参数传递给命令,因此需要将参数分