c++调用易语言写的dll

Python013

c++调用易语言写的dll,第1张

这是我之前写的一个 易语言做的取网页源码的 你可以参考下

void CMyDlg::OnOK()

{

// TODO: Add extra validation here

HINSTANCE hMod = LoadLibrary("MyDll.dll")

//载入Mydll.dll

typedef char *(WINAPI *ADD)(CString)

//添加一个函数 char 返回字符串 WINAPI ADD添加 CString 输入字符串

ADD App_Add = (ADD)GetProcAddress(hMod,"App_Add")

//添加函数名

CString str

//设置个字符串变量

char *sc

//char *字符串 sc

CString URL

//CString 为网址

GetDlgItemText(IDC_EDIT2,URL)

//获取IDC_EDIT2 为编辑框的ID URL 获取编辑框的内容

sc=App_Add(URL)

//App_Add 为函数 执行 获取URL网址源码, 传递参数为字符串 URL sc获取源码

str=(sc)

//sc char* 转成CString

GetDlgItem(IDC_EDIT1)->SetWindowText(str)

//把转好的str输入到编辑框1ID为 IDC_EDIT1

sc=App_Add("http://mccpx.top/XXP/time.php")

//sc=获取网络时间

str=(sc)

//转成CString

GetDlgItem(IDC_STATIC)->SetWindowText(str)

//输出 标签IDC_STATIC

FreeLibrary(hMod)

//关闭Dll句柄

//关闭 CDialog::OnOK() IDC_EDIT1

}

不懂在追问

在编写程序的时候往往需要调用到别的语言编写的DLL文件,下面先来看一下在易语言中如何调用VC编写的DLL呢,首先用VC编写一个简单的DLL文件,代码如下:

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文件导出是一样的道理。