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

时间:2014-04-25 06:50:32

标签: c++ c opencv

我在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);
           }

        }

1 个答案:

答案 0 :(得分:17)

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

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