VC调用易语言写的DLL例子 100

.版本2.DLL命令fdx,整数型,"fdx.exe","注册".参数邮箱,文本型.参数密码,文本型这是我易语言调用的例子请问VC怎么调用?给个例子好吗?... .版本 2
.DLL命令 fdx, 整数型, "fdx.exe", "注册"
.参数 邮箱, 文本型
.参数 密码, 文本型

这是我易语言调用的例子

请问VC怎么调用? 给个例子好吗?
展开
 我来答
544600209995
2012-05-18 · TA获得超过256个赞
知道答主
回答量:104
采纳率:0%
帮助的人:29.2万
展开全部
今天尝试用VC++调用易语言的DLL。易语言有很多不错的高级函数库,且编写DLL过程非常简单,一切C++下复杂的功能,可以在易语言里简单的实现,所以我们考虑通过易语言制作DLL给VC++调用。

易语言的DLL函数都是stdcall约定,而且不会生成lib文件给你调用。

这样,要调用我们易dll有两种途径:

1. VC中动态调用_stdcall。

2. 自己制作一份lib文件再静态调用。

这两种方法各有利弊,如果DLL里的函数较多,制作lib库会花些时间,但是一劳永逸。

动态调用DLL则需要调用API函数LoadLibrary 和 GetProcAddress。LoadLibrary载入需要调用的DLL文件,然后用GetProcAddress 得到DLL中某个函数的指针,然后通过函数指针调用。

下面我们举例说明,如何制作易语言DLL并在VC中动态调用。

1. 首先,制作一个易语言的DLL。

打开易语言,弹出向导中选择"windows动态链接库"。

现在我们添加自己的函数了。Ctrl+N添加一个函数如下

.版本 2

.子程序 myadd, 双精度小数型, 公开
.参数 a, 双精度小数型
.参数 b, 双精度小数型

返回 (a + b)

myadd函数用来计算两个双精度小数(即C++的double类型)的和。

不要忘记函数要公开,这样才能export此函数。

完成后,编译成dll文件,命名为mydll.dll

这样,一个简单的易语言DLL就制作完成了。

2. 在VC中调用易语言的DLL

要动态调用DLL,需要使用API函数LoadLibrary 和 GetProcAddress。查下MSDN就知道,使用这两个函数需要加入

#include <Windows.h>

接下来,我们需要对调用的函数声明一个_stdcall的函数类型。

typedef double(CALLBACK *dll_myadd)(double,double);

(注意: CALLBACK和WINAPI都是__stdcall的一种别名,这个在windef.h中有定义:

#define CALLBACK __stdcall //回调函数用
#define WINAPI __stdcall //WINAPI用
用哪个随便,你也可以直接写__stdcall. )

有了函数类型,你就可以用他来定义函数指针变量,进而调用函数了。

HINSTANCE hDll; //dll句柄
dll_myadd myadd; //函数指针变量

hDll=LoadLibrary("mydll.dll"); //载入dll
myadd=(dll_myadd)GetProcAddress(hDll,"myadd"); //得到dll中myadd函数的指针地址

double s = myadd(1.2,2.3); //这里调用函数

不要忘记,在DLL使用完毕后要调用

FreeLibrary(hDll); //释放DLL句柄

这样调用易语言DLL的简单例子就完成了。需要注意的是:

声明函数类型的时候,一定要指定是stdcall调用,这点不能省略。因为VC默认的调用方式是cdecl方式。

如果想省略的话也可以,那就是要改变项目属性,在属性页 - C++选项卡 - 高级 - 调用约定 里 选择使用stdcall。这样也可以省略stdcall声明。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式