c++ 调用c代码 extern “C“ 确不能解决问题 unresolved external symbol

一个常见的link错误

初学者在使用c++调用第三方的c代码或者c动态库时,很容易遇到unresolved external symbol的问题。如果没有经验会感到很困惑,因为这个提示表示编译器在做link的时候找不到相应的符号,就像是对应的函数没有定义。可以,我们确实已经定义了。

原因

c++由于重载的需要在编译阶段创建函数的符号时,会把函数的参数类型,个数,函数本身的const属性等等合并起来,一起做一个符号,可以将同样名称的函数编译成完全两个不同的符号,在链接阶段作为两个不同的函数使用。所以,才出现了c++调用c时找不到符号的问题。

解决办法

既然知道了原因,那么解决办法很简单,c++调用c时可以写成下边的方式,

// c++ file
extern "C"
{
   
#include "cheaderfile.h"
}
<
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值