C调用约定:函数名字没有发生改变,解决文字改编问题。缺点:无法导出类的成员函数,只能导出全局函数。
dllTest.h头文件
#ifdef DLL1_API
#else
#define DLL1_API extern "C" _declspec(dllimport)
#endif
DLL1_API int add(int a,int b);
DLL1_API int subtract(int a,int b);
dllTest.cpp源文件
#define DLL1_API extern "C" _declspec(dllexport)
DLL1_API int add(int a,int b)
{
return a+b;
}
DLL1_API int subtract(int a,int b)
{
return a-b;
}
C++调用约定:可以导出类的成员函数。缺点:函数名字 发生了改变,文字改编了。
dllTest.h头文件
#ifdef DLL1_API
#else
#define DLL1_API _declspec(dllimport)
#endif
DLL1_API int add(int a,int b);
DLL1_API int subtract(int a,int b);
dllTest.cpp源文件
#define DLL1_API _declspec(dllexport)
DLL1_API int add(int a,int b)
{
return a+b;
}
DLL1_API int subtract(int a,int b)
{
return a-b;
}
标准调用约定:WINAPI调用约定(pascal调用约定)
dllTest.h头文件
#ifdef DLL1_API
#else
#define DLL1_API extern "C" _declspec(dllimport)
#endif
DLL1_API int _stdcall add(int a,int b);
DLL1_API int _stdcall subtract(int a,int b)
dllTest.cpp源文件
#define DLL1_API extern "C" _declspec(dllexport)
DLL1_API int _stdcall add(int a,int b)
{
return a+b;
}
DLL1_API int _stdcall subtract(int a,int b)
{
return a-b;
}
模块定义文件(DEF)
dllTest.def
LIBRARY DLL1TEST
EXPORTS
add
subtract