Chinaunix首页 | 论坛 | 博客
  • 博客访问: 571172
  • 博文数量: 32
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 1492
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-09 13:38
文章分类

全部博文(32)

文章存档

2011年(1)

2009年(1)

2008年(30)

我的朋友

分类: C/C++

2008-03-28 18:17:52


在编译源文件时,C编译器和C++编译器都会对符号(函数或变量)名作某些修正,但两者采用的修正方法不同,所以两者生成的目标文件不能互相链接。在C++中使用extern "C"可以让C++符号获得C链接特性。由于C++编译器会自动定义__cplusplus宏,所以在C语言头文件中采用这种结构可以保证无论使用何种编译器,生成的目标文件都具有C链接特性,能够与标准C编译器所生成的目标文件相链接。

通常c/c++编译器会根据文件后缀来选择符号修正,所以最好把c的代码放到.c文件中,把c++的代码放到.cpp文件中。

我用VC++6.0创建动态库,做了以下试验。

在test.cpp中输出c函数,如下:

1、新建Win32 Dynamic-Link Library

2、输出函数

extern "C" _declspec(dllexport) void far test();

void far test()

{



}

而在test.c中输出c函数,就可以这样,如下:

1、新建Win32 Dynamic-Link Library

2、输出函数

_declspec(dllexport) void far test();

void far test()

{



}
阅读(1633) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~