extern “C”
在C++环境下使用C函数的时候,常常会出现编译器无法找到obj模块中的C函数定义,从而导致链接失败的情况,应该如何解决这种情况呢?
答案与分析:
testC.c
还要在VS2008中点击testC.c右键属性->预编译头->不预编译头
在C++环境下使用C函数的时候,常常会出现编译器无法找到obj模块中的C函数定义,从而导致链接失败的情况,应该如何解决这种情况呢?
答案与分析:
C++语言在编译的时候为了解决函数的多态问题,会将函数名和参数联合起来生成一个中间的函数名称,而C语言则不会,因此会造成链接时找不到对应函数的情况,此时C函数就需要用extern “C”进行链接指定,这告诉编译器,请保持我的名称,不要给我生成用于链接的中间函数名。
testC.h
#ifndef __testC
#define __testC
#ifdef __cplusplus
extern "C" {
#endif
void show();
#ifdef __cplusplus
}
#endif
#endif /* __testC */
testC.c
#include "testC.h"
void show()
{
printf("哈哈");
}
还要在VS2008中点击testC.c右键属性->预编译头->不预编译头
然后就可以在C++里面用了