
VC++ 实现 Windows DLL API 和 C#调用 VC++ DLL API
在DLL API 中,首先应该给他一个 API 的入口点,指明 API 函数的入口内存地址,代码如下:
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
printf("\nprocess attach of dll");
break;
case DLL_THREAD_ATTACH:
printf("\nthread attach of dll");
break;
case DLL_THREAD_DETACH:
printf("\nthread detach of dll");
break;
case DLL_PROCESS_DETACH:
printf("\nprocess detach of dll");
break;
}
return TRUE;
}
上面这个 API函数 的入口在我测试中,有和没有基本是一样的,但是一个正确的API应该是有这道程序的,
在这里只做声明。建议使用API 入口。
添加一个简单的 API 函数进行测试,看看是否能正常调用这个加法运算的 API函数,代码如下:
int _stdcall WINAPI Add(int x,int y)
{
return x+y;
}
注:
WINAPI :关于 WINAPI 请参考:http://baike.baidu.com/view/2311822.html?tp=0_11
__stdcall:被这些修饰关键字修饰的函数,其参数都是从右向左通过堆栈传递的(__fastcall的前面部分由
ecx,edx传),函数调用在返回前要清理堆栈,但由调用者还是被调用者清理不一定。
请参考:http://baike.baidu.com/view/1276580.htm