分享

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

 yadinae 2009-08-22
【C++】编写动态链接库(DLL) __stdcall
2009-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 <stdio.h>
#include <windows.h>

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多