当前位置: 首页 > article >正文

linux c与c++库互相调用

C++可以兼容C的语法,C/C++主要的区别是编译函数符号规则不一样,C语言代码编译后的函数名还是原来函数名,C++代码编译后的函数名带有参数信息。
两种语言生成的库是无法直接互相调用的,原因在于c++支持重载,因此存在改名机制(也可能是因为有改名机制所以支持重载 ,即生成的中间文件会对函数名进行改写,会将函数名与参数列表相结合生产新的函数名,这样就可以通过不同的函数名来区分重载函数了。而C语言没有改名机制,函数名未改动,若两种语言直接调用,便会报错:函数名未定义。

C调用C++库的问题

错误描述

首先,我们来了解一下具体的错误信息:

$ gcc main.cpp -o main
/tmp/cc2BAcMf.o: In function `main':
main.cpp:(.text+0x20): undefined reference to `__gxx_personality_v0'
collect2: error: ld returned 1 exit status

这段代码尝试使用GCC编译一个名为main.cpp的C++文件,然后将其链接成一个名为main的可执行文件。但是,在链接阶段出现了错误,提示对__gxx_personality_v0的未定义引用。

分析

__gxx_personality_v0是GCC C++异常处理部分的一个函数。通常,当我们尝试用GCC(而非G++


http://www.kler.cn/a/134855.html

相关文章:

  • C++编程:利用环形缓冲区优化 TCP 发送流程,避免 Short Write 问题
  • SHELL脚本(Linux)
  • 使用elementUI实现表格行拖拽改变顺序,无需引入外部库
  • 如何用WordPress和Shopify提升SEO表现?
  • 鸿蒙自定义UI组件导出使用
  • C# 委托与匿名方法
  • Nginx(反向代理,负载均衡,动静分离)
  • 7.22 SpringBoot项目实战【收藏 和 取消收藏】
  • OpenHarmony Meetup北京站招募令
  • 个人博客汇总
  • C语言-求一个整数储存在内存中的二进制中1的个数
  • 多对多的创建方式与Ajax
  • 适合您的智能手机的 7 款优秀手机数据恢复软件分享
  • 现货白银MACD实战分析例子
  • 【latex】公式推导等号对齐
  • servlet乱码问题
  • easyExcel注解详情
  • Python UI自动化 —— 关键字+excel表格数据驱动
  • “一键搜索,海量商品任你选!多平台聚合,购物更便捷!“
  • Django 入门学习总结2 创建一个投票系统
  • 【MySQL】CONCAT、CONCAT_WS、GROUP_CONCAT 函数用法
  • 【产品应用】一体化伺服电机在系留无人机中的应用
  • mfc140u.dll丢失的解决方法,以及mfc140u.dll解决方法的优缺点
  • debian/ubuntu/linux如何快速安装vscode
  • MySQL 8.0:性能优化与新功能
  • 解锁编程潜能:探索亚马逊CodeWhisperer,打造编程世界的声音引导者