C+的dll如何用易语言正确调用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C+的dll如何用易语言正确调用?相关的知识,希望对你有一定的参考价值。
/**
* DLE DC4 n m t<br>
* 实时产生开钱箱脉冲
* @param m:0,1;
* @param t,1<=t<=8;
* @return int
* */
int _stdcall uniopenCashboxRealtime(int fs, int m, int t)
char data[] = 0x10, 0x14, 0x01, (BYTE)m, (BYTE)t ;
return uniWrite(fs, data, sizeof(data));
int WINAPI add(int x,int y)
return x+y;
这是一个简单的两个数加法操作,返回两个数相加的结果,这里我生成的是MFC DLL,并且需要在def中导出add函数。
下面用易语言来调用它,首先在易语言中需要插入一个DLL命令,代码如下:
.版本 2
.DLL命令 调用CDLL, 整数型, "cdll.dll", "add"
.参数 x, 整数型
.参数 y, 整数型
并且保存工程文件与DLL文件在一起,否则可能会报找不到DLL的错误.下面在按钮中添加如下代码:
.版本 2
.子程序 _按钮1_被单击
信息框 (调用CDLL (5, 5), 0, )
这样我们传递了两个数后就可以返回结果了,如下图:
上图的信息框显示返回的结果是10,那么这就是正确的了,易语言调用VC的DLL需要注意类型,并且DLL函数需要WINAPI或stdcall,否则也会报错。
下面我们再来看一下VC如何调用易语言的DLL,还是先用易语言编写一个DLL文件,建立一个DLL动态链接库工程,新建一个子程序,代码如下:
.版本 2
.子程序 add, 整数型, 公开
.参数 x, 整数型
.参数 y, 整数型
返回 (x + y)
下面我们用VC来调用这个DLL并且返回结果,代码如下:
HINSTANCE hMod = LoadLibrary("e.dll");
typedef int(WINAPI *ADD)(int,int);
ADD myadd = (ADD)GetProcAddress(hMod,"add");
CString str;
str.Format("%d",myadd(5,5));
MessageBox(str);
FreeLibrary(hMod);
调用后结果如下图:
这样就得到了正确的结果了,需要注意的是易语言子程序必须公开,公开也就是与VC中def文件导出是一样的道理。 参考技术A
请参考
追问问题是如何正确调用上面C+的函数
追答看看这次明白了吗
以上是关于C+的dll如何用易语言正确调用?的主要内容,如果未能解决你的问题,请参考以下文章