免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: aobai
打印 上一主题 下一主题

C 怎么调用c++写的库? [复制链接]

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
11 [报告]
发表于 2010-08-10 17:37 |只看该作者
gcc -x c++ test.c    -L/xxxx    -lxxxx

论坛徽章:
0
12 [报告]
发表于 2010-08-10 18:05 |只看该作者
刚才试了一下。再封一下没有用。只能重编C++ 在.h文件里加上
  1. #ifdef __cplusplus
  2. extern "C" {
  3. #endif
  4. .......
  5. #ifdef __cplusplus
  6. }
  7. #end
复制代码
并且把.h文件#include 到cpp文件中。

如果不#include 也可以直接这样声明

  1. extern "C" void test(void);
复制代码

论坛徽章:
0
13 [报告]
发表于 2010-08-10 18:26 |只看该作者
需要导出c接口,否则编译器会修改c++函数名,导致外面访问不到。

论坛徽章:
0
14 [报告]
发表于 2010-08-10 22:38 |只看该作者
就算extern 包一层,c++的库肯定要重编吧

c++会在名字上加很多信息,不重新编译不会生成c代码接口

论坛徽章:
0
15 [报告]
发表于 2010-08-10 23:04 |只看该作者
动态链接也不行?

论坛徽章:
0
16 [报告]
发表于 2010-08-11 08:26 |只看该作者
主要是连接的问题,因为c++允许重载,所以和c生成函数名的规则不一样,使用extern "C",主要是在两者之间做协商。我的总结。http://gcoder.blogbus.com/logs/32115507.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP