在 Ubuntu 上构建 OpenCV '_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4'符号的未定义引用
undefined reference to symbol '_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4' building OpenCV on Ubuntu
我在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);
}
}
我使用gcc而不是g++时也出现了同样的错误,我相信你必须使用clang++
clang++ -std=c++11 w.cpp -o w `pkg-config --cflags --libs opencv`
编译C++文件时,最好使用
g++ client.cpp -Wall -lstdc++ -o client
相关文章:
- 未定义的引用,尽管存在符号,但 std::experimental::可选
- 为什么在引用指针时将 const 放在 & 符号的左侧有效,而在右侧则无效?
- 对符号'_ZN3ros10NodeHandle9subscribeERNS_16SubscribeOptionsE'的未定义引用
- 函数 _main (OPENGL C++) 中引用的未解析的外部符号 ________
- 对符号'_ZN3pcl7console5printENS0_15VERBOSITY_LEVELEPKcz'的未定义引用
- 函数 LNK2019 "int __cdecl __scrt_common_main_seh(void)" 中引用的未解析外部符号主错误 (?__scrt_common_main_seh@@YAHXZ
- 如何引用符号表中的值?
- 函数_wmain中引用未解析的外部符号_RasSetEntryPropertiesW@24
- 输入迭代器是否可以仅在赋值的右侧符号上取消引用?
- 未定义的引用,即使库正在链接并且它包含正确的符号
- C++ 链接器错误 LNK 2019 函数中引用的未解析的外部符号
- 未定义的符号:符号引用错误.没有输出写入主
- 符号引用错误
- C++虚拟析构函数和符号引用错误
- 为什么在 G++ 中编译时会出现符号引用错误
- 符号引用调用模板类的成员函数时出现的错误
- 如何解决libmysqlclient_r.so符号引用链接错误
- 链接器用内存地址替换符号引用
- 符号引用错误
- LNK2019在功能中未解决的外部符号引用