交叉编译下,通过g++生成的库文件在gcc编译时出现undefined reference to xxx问题该怎么解决?

发布于 2022-09-01 16:00:12 字数 1336 浏览 30 评论 0

最近在开发一个视频处理的arm板子,由于板子处理能力有限,所有编译工作都是放在Linux下进行,厂商给提供了SDK,SDK中视频流的生成和保存部分都直接沿用,但是这一部分是用C写成的,导致我想用opencv处理只能通过生成一个库文件,再在那个视频生成保存程序(这个程序为make的最终目标)中进行调用,但是生成库文件后调用出现大量undefined reference to xxx:

一下为报错片段

/usr/local/OpenCV-ARM/lib/libopencv_calib3d.so: undefined reference to `__cxa_get_exception_ptr'
/usr/local/OpenCV-ARM/lib/libopencv_contrib.so: undefined reference to `vtable for std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >'
/usr/local/OpenCV-ARM/lib/libopencv_contrib.so: undefined reference to `typeinfo for std::exception'
/usr/local/OpenCV-ARM/lib/libopencv_contrib.so: undefined reference to `__cxa_free_exception'
/usr/local/OpenCV-ARM/lib/libopencv_flann.so: undefined reference to `std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::str() const'
/usr/local/OpenCV-ARM/lib/libopencv_calib3d.so: undefined reference to `std::_List_node_base::hook(std::_List_node_base*)'
/usr/local/OpenCV-ARM/lib/libopencv_calib3d.so: undefined reference to `operator new[](unsigned int)'
/usr/local/OpenCV-ARM/lib/libopencv_contrib.so: undefined reference to `std::_List_node_base::unhook()'
/usr/local/OpenCV-ARM/lib/libopencv_calib3d.so: undefined reference to `__cxa_begin_catch'

希望遇到该问题的高人能够指点一下

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦断已成空 2022-09-08 16:00:12

extern "C"了么?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文