未定义引用符号'_ZNSt8ios_base4InitD1Ev @@ GLIBCXX_3.4'在Ubuntu上构建OpenCV

use*_*736 10 c c++ opencv

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

    clang -std=c++11 w.cpp -o w `pkg-config --cflags --libs opencv`
Run Code Online (Sandbox Code Playgroud)

以下是错误:

        /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)
Run Code Online (Sandbox Code Playgroud)

这是w.cpp的内容.我正在尝试使用clang对代码进行基准测试.

        #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);
           }

        }
Run Code Online (Sandbox Code Playgroud)

Pan*_*dal 18

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

clang++ -std=c++11 w.cpp -o w `pkg-config --cflags --libs opencv`
Run Code Online (Sandbox Code Playgroud)