您的位置:首页 > 编程语言 > C语言/C++

C导出接口与C++导出接口对比

2012-05-23 16:23 225 查看
C++导出的接口

宏定义:#define ADAPTER_DLL_API
__declspec(dllexport)

优点:

(1) 允许函数重载,即类中可以存在重名的函数

(2) 可以保证导出接口和使用接口的一致性,即可以直接使用导出的头文件

(3) 当接口名字或者参数类型和个数发生变化时,可以通过编译迅速定位问题。

(4) 可以将多个DLL工程和一个Exe工程放在一个大工程中,设置编译顺序和依赖关系,可以简单的编译、连接和运行。

缺点:

(1) 如果没有该DLL或者DLL的平台不匹配,运行相关的Exe程序会失败。

(2) 发布版本需要头文件,Lib文件,DLL文件

C导出的接口

宏定义:#define ADAPTER_DLL_API
extern"C" __declspec(dllexport)

函数如下:

// 加载C接口的DLL文件资源

HINSTANCE LoadLibrary(

LPCTSTR lpLibFileName

);

// 通过函数名查找相应的函数指针

FARPROC GetProcAddress(

HMODULE hModule,

LPCWSTR lpProcName

);

// 释放DLL文件资源

BOOL FreeLibrary(

HMODULE hLibModule

);

优点:

(1) 如果没有该DLL或者DLL的平台不匹配,可以运行相关的Exe程序,只是相关的功能用不上,其他的功能照样可以使用。

(2) 不需要相关的lib文件,降低了调用程序与DLL的程序的耦合性。

(3) 不需要以前的接口的情况下,包括增加接口和修改接口实现的下,不需要重新编译整个程序。

缺点:

(1) 不允许函数重载

(2) 发布版本需要头文件和DLL文件

(3) 需要增加一个接口文件,调用LoadLibrary(),GetProcAddress(),FreeLibrary()函数。

个人感觉,大工程最好使用C接口导出,小工程最好使用C++接口导出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: