C调用C函数extern错误.docVIP

  • 9
  • 0
  • 约1.84千字
  • 约 3页
  • 2017-05-31 发布于北京
  • 举报
C++调用C函数 前言:以前见到extern C这样的语句,只是简单地知道跟外部链接有关,但是没有深刻理解它的意思。 首先,为什么要使用extern C修饰符? C++调用其它语言的函数,由于编译器生成函数的机制不一样,所以需要经过特殊处理,才可以调用。调用C语言的函数,需要在函数声明的地方语句extern C。如果不使用该语句,在链接的时候,编译器就会报以下这种错误。 Test.obj : error LNK2019: 无法解析的外部符号 void __cdecl DeleteStack(struct _Node *) (?DeleteStack@@YAXPAU_Node@@@Z),该符号在函数 _main 中被引用。 然后是如何使用? 应该怎么使用该语句呢? 刚开始,我简单地在C++源文件的前面使用该语句声明,但是还是出错,而且是在编译阶段就报错。 [cpp] view plaincopyprint? error?C2732:?链接规范与“DeleteStack”的早期规范冲突。?? error C2732: 链接规范与“DeleteStack”的早期规范冲突。 为什么会出现这个错误呢?因为C++源文件已经引入了C的头文件,在头文件里,声明该函数时没有extern修饰,而这里有extern修饰,所以冲突了。解决的办法有两个。 一。在C头文件中加上extern修饰符。 直接加

文档评论(0)

1亿VIP精品文档

相关文档