如何使C,C++编译器都可以调用C写的DLL
2009-12-15 16:45
148 查看
由于C++编译器需要支持函数的重载,会改变函数的名称,与标准C中函数名称不同。然而dll的导出函数通常是标准C定义的,让标准C编写的dll函数定义在C和C++编译器下都能编译通过,通常会使用以下的格式:(这个格式在很多成熟的代码中很常见)
#ifdef __cplusplus extern "C"
{
#endif
// 在这里写标准C程序,例如dll导出函数的定义
#ifdef __cplusplus
};
#endif
下面解释一下上面的代码:
首先__cplusplus是C++编译器内部定义的宏,如果使用的C编译器,__cplusplus宏不会被定义。它可以作为区分使用的是C编译器还是C++编译器的标志。在标准C中C代码直接写就可以了。而在C++中,需要加extern "C"或包含在extern "C"块中。由于标准C是不支持extern "C"的,会产生变异错误,所以使用预编译指令通过__cplusplus来判断只有在使用C++编译器的时候才定义extern "C"。
以上是在网上找到的解决C和C++编译器都能调用由C编译而成的.dll的方式。抱歉找不到出处了,希望原作者谅解。
相关文章推荐
- 如何使C,C++编译器都可以调用C写的DLL
- 在你的DLL中,如何导入(导出)一个类,使得其他项目可以调用该类?
- 可以供MFC调用的,QT实现的DLL(使用qt-solutions的qtwinmigrate实现)
- 如何查看exe或dll调用了什么dll
- 如何在VB中调用VC编写的DLL
- 如何动态调用DLL中的导出类
- C#如何调用C++的dll
- 谈谈dll的lib和系统API如何实现被调用的
- 如何调用DLL (基于Visual C++6.0的DLL编程实现)
- C#抽象类可以有构造方法吗,若是有如何实现及调用?
- 如何在C语言中调用C++编写的DLL中的函数
- JAVA里如何调用C/C++的DLL里的函数
- InstallShield如何调用c++的dll
- LabVIEW如何调用VB6生成的ActiveX DLL
- C#如何调用C++编写的DLL
- 如何在java中使用jna.jar调用Delphi写的dll
- asp.net 项目中如何调用vb dll 函数
- 如何调用 DLL 中的C++ 类(隐式链接)
- VC++6.0如何创建与调用动态链接库(dll)
- How to invoke active dll written by VB using VC - VC如何调用VB写的Active Dll - 详解