【问题标题】:undefined reference to symbol '_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4' building OpenCV on Ubuntu在 Ubuntu 上构建 OpenCV 对符号“_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4”的未定义引用
【发布时间】:2014-06-10 18:02:04
【问题描述】:

我在 Ubuntu Trusty 上,我正在使用此命令构建以下代码。我是 clang 的新手,我可以帮助调试这些错误。这些 C 绑定来自编译好的 cpp 和 hpp 文件。我将这些文件中的标头复制到我在此处列出的以下文件中,w.cpp

    clang -std=c++11 w.cpp -o w `pkg-config --cflags --libs opencv`

以下是错误:

        /usr/bin/ld: /tmp/w-2a90f4.o: undefined reference to
        symbol '_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4'
        //usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding 
         symbols: DSO missing from command line
        clang: error: linker command failed with exit code 1 
          (use -v to see invocation)

这是 w.cpp 的内容。我正在尝试使用 铛。

        #include <opencv2/c/mat.hpp>
        #include <opencv2/c/opencv_generated.hpp>
        using namespace cv;
        using namespace std;
        using namespace flann;
        using namespace cvflann;


        void cv_delete(char* self) {
             delete self;
        }


        Mat* cv_create_Mat() {
            return new Mat();
        }


        BFMatcher* cv_create_BFMatcher(int normType, bool crossCheck) {
            return new BFMatcher(normType, crossCheck);
        }




        int main () {

         for( int a = 1; a < 20; a++)
           {
              Mat a =  &cv_create_Mat(); 

              cv_delete(a);
           }

        }

【问题讨论】:

  • c++filt 表示_ZNSt8ios_base4InitD1Evstd::ios_base::Init::~Init() 的修饰/损坏名称。 @@GLIBCXX_3.4 显然是一些库版本控制标签,但我不知道它应该如何工作的机制。
  • 尝试添加:-stdlib=libc++
  • @Brett Hale 感谢您对我的帖子发表评论:)...这确实有帮助...现在我得到 /usr/local/include/opencv2/core/cvdef.h:343: 12: 致命错误: 'cmath' file not found #include
  • 如果有人使用gcc 而不是clang 遇到同样的错误,请确保使用g++
  • 如果您使用的是 g++,请查看此内容stackoverflow.com/questions/14888626/…

标签: c++ c opencv


【解决方案1】:

我使用 gcc 而不是 g++ 也出现同样的错误,我相信你必须使用 clang++

clang++ -std=c++11 w.cpp -o w `pkg-config --cflags --libs opencv`

【讨论】:

  • 很好的答案。谢谢!!
【解决方案2】:

使用gcc 也可以,但是在编译 C++ 文件时,最好使用它

gcc client.cpp -Wall -lstdc++ -o client

【讨论】:

    猜你喜欢
    • 2016-01-16
    • 2014-01-09
    • 2012-04-23
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2014-05-24
    相关资源
    最近更新 更多