不可小看的extern "C"

     项目中要用到一个模块。看了下该模块的用法,就依葫芦画瓢的搬到自己的代码里面来了。不过在编译的时候碰到了麻烦, 在程序链接的时候出错:“undefined reference to***",应该是因为没有包含相应的库文件吧。

      于是比较了make file文件的写法,试图在我这边的makefile 中加上相应的库。但是折腾了半天,未解决。在网上搜了半天,没有点头绪,忽然一个帖子中的一句话提醒了我,“或者就是c++   和c对同名的函数编译出的函数名字是不一样的。所以呢要extern   c”。赶紧看我们的代码!果然,我引用的模块是用c写的,但是它的相应函数没用放在extern C{}内;而我这部分用的是C++。。。

     于是在相应部位加上 #ifdef __cplusplus

                                      extern "C" {

                                  #endif

和#ifdef __cplusplus

    }

  #endif。链接通过了! 

     一个经验是为了c代码能在C++中方便的使用,一定要在c程序相应头文件中加上 extern  "C"。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值