700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 易语言c调用 易语言调用C++编写的DLL

易语言c调用 易语言调用C++编写的DLL

时间:2021-01-23 02:40:46

相关推荐

易语言c调用 易语言调用C++编写的DLL

511遇见网站最近在录制一套易语言编写DLL及调用和Hook,今天记录一下使用VS编写一个C++的Dll,易语言来调用。

步骤:

1、启动VS

2、创建工程

3、Visual C++ -----Win32 Console Application

4、选择DLL

5、自动创建几个文件

6、dllmain.cpp代码:

// dllmain.cpp : 定义 DLL 应用程序的入口点。

#include "stdafx.h"

BOOL APIENTRY DllMain( HMODULE hModule,

DWORD ul_reason_for_call,

LPVOID lpReserved

)

{

switch (ul_reason_for_call)

{

case DLL_PROCESS_ATTACH:

case DLL_THREAD_ATTACH:

case DLL_THREAD_DETACH:

case DLL_PROCESS_DETACH:

break;

}

return TRUE;

}

参数中,hMoudle是动态库被调用时所传递来的一个指向自己的句柄(实际上,它是指向_DGROUP段的一个选择符); ul_reason_for_call是一个说明动态库被调原因的标志,当进程或线程装入或卸载动态链接库的时候,操作系统调用入口函数,并说明动态链接库被调用的原因,它所有的可能值为:DLL_PROCESS_ATTACH: 进程被调用、DLL_THREAD_ATTACH: 线程被调用、DLL_PROCESS_DETACH: 进程被停止、DLL_THREAD_DETACH: 线程被停止;lpReserved为保留参数。

7、在dllmain.cpp最后添加

// dllmain.cpp : 定义 DLL 应用程序的入口点。

#include "stdafx.h"

BOOL APIENTRY DllMain( HMODULE hModule,

DWORD ul_reason_for_call,

LPVOID lpReserved

)

{

switch (ul_reason_for_call)

{

case DLL_PROCESS_ATTACH:

case DLL_THREAD_ATTACH:

case DLL_THREAD_DETACH:

case DLL_PROCESS_DETACH:

break;

}

return TRUE;

}

extern "C" __declspec(dllexport) int _stdcall add(int a, int b)

{

return (a + b);

}

extern "C" __declspec(dllexport)int _stdcall sub(int a, int b)

{

return (a - b);

}

8、点击生成编译生成一个Win32Project1.dll.(默认工程名称,可以创建时或创建后修改)

易语言调用:

1、插入 DLL命令

.版本 2

.DLL命令 add, 整数型, "Win32Project1.dll", "_add@8"

.参数 x, 整数型

.参数 y, 整数型

DLL堆栈出错解决办法

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。