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

来源:互联网 发布:网络直播红人瞳孔 编辑:程序博客网 时间:2024/06/07 02:10

C++导出的接口

宏定义:#define ADAPTER_DLL_API__declspec(dllexport)

优点:

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

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

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

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

缺点:

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

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

 

C导出的接口

宏定义:#define ADAPTER_DLL_APIextern"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++接口导出。


原创粉丝点击