c调用c++编的dll,c++调用c编写的dll,extern “C”的用法

转自:http://blog.csdn.net/life_is_too_hard/article/details/52137271

c和c++不能直接相互调用,主要是因为c++有重载函数的功能,为了区分重载函数,编译器会在函数名上加上一些修饰用符号,而c不这么做。为了让c与c++的程序能够相互调用对方的库,就有了extern “C”。注意,extern “C” 是c++的规范,所以只能出现在c++的代码里面,加在函数声明前,表示函数是用c的规范。

1.c代码调用c++dll

编译c++dll的要点

  • 供c调用的c++的函数接口不能包含c++特有的东西。
  • 在编译生成供c代码调用的dll时,头文件的中的函数声明前要加上extern “C” 告诉编译器按照c规范处理函数名。
  • 编译完成后,提供给c使用的头文件里面不能包含extern “C”,可以使用宏开关解决,也可以重新写个头文件。

c代码调用c++dll的要点

  • 和正常调用c函数一样

2.c++调用c语言dll

编译c预言 dll的要点

  • c语言dll正常编写,不需要做额外处理

c++调用c语言dll的要点

  • 在包含c的头文件或声明来自c的函数时需要加上extern "C", 建议这么做

总结,不管谁调用谁,c代码不需要特殊处理,只要在c++代码的正确位置加上extern ”C" 即可。

上一篇:解决:Android 8.0检测不到当前的activity


下一篇:NHibernate3快速上手教程FluentNHibernate配置与DBHelper(已过期,有更好的)