【C++】编写动态链接库(DLL) __stdcall_【wjxgzz的博客】

来源:百度文库 编辑:神马文学网 时间:2024/04/29 07:47:16
【C++】编写动态链接库(DLL) __stdcall2009-08-21 22:57

刚有人在问我,C++怎么写动态库易语言调用..

动态库 有一个叫DLLMAIN的入口函数.[ WINMAIN 相似 ] 原型如下:

BOOL APIENTRY DllMain (HINSTANCE hInst,DWORD reason,LPVOID reserved);

动手开工...

extern "C" __declspec(dllexport) int Add(int n1,int n2)

如此写的话 在易语言中只能使用LoadLibrary GetProcAddress等系列函数进行调用..那有什么办法可以像API那么调用呢?.我们需要一个def模块文件.

内容的编写很简单.

LIBRARY "库名.dll"

EXPORTS

Add

//导出函数列表

命令行编译: cl /EHsc /LD CPP源文件 /DEF DEF模块文件

查看一下导出表 嘎嘎..任务完成! 看实例你就会明白的!

附实例:

//test.cpp

#include
#include

BOOL APIENTRY DllMain (HINSTANCE hInst,DWORD reason,LPVOID reserved)
{
switch(reason)
{
   case DLL_PROCESS_ATTACH: //DLL进程加载的时候执行事件
    break;
   case DLL_PROCESS_DETACH: //DLL进程卸载的时候执行事件
    break;
   case DLL_THREAD_ATTACH: //DLL线程加载的时候执行事件
    break;
   case DLL_THREAD_DETACH: //DLL线程卸载的时候执行事件
    break;
}
return TRUE;
}

int __stdcall Add(int n1,int n2)
{
return n1+n2;
}

//DEF文件

LIBRARY "test.dll"
EXPORTS
Add