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

步骤:

1、启动VS2015
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", "[email protected]"
    .参数 x, 整数型
    .参数 y, 整数型

DLL堆栈出错解决办法

参考:易语言调用C++编写DLL堆栈出错解决办法


发布日期:

所属分类: 易语言 标签: