当前位置:首页 > 编程笔记 > 正文
已解决

linux c与c++库互相调用

来自网友在路上 189889提问 提问时间:2023-11-20 16:55:45阅读次数: 89

最佳答案 问答题库898位专家为你答疑解惑

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++

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"linux c与c++库互相调用":http://eshow365.cn/6-40489-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!