使用易语言DLL来返回文本供其他语言调用. 前言:在使用易语言与其他语言配合编程中,有时需要使用易语言的DLL来返回文本型的值,但是由于易语言本身文本型数据不能直接返回让其他语言使用(直接使用多次会崩溃).所以这里要使用一种转换的方式,是其他语言调用易语言的文本返回参数. 一.方法. 原理说明: 使用了内存的操作, 在易语言当中,申请一块足够的内存(例程中为1024字节),然后将要返回的文本写到该内存中,然后DLL返回一个内存指针.再在其他语言中读取该指针. 调用伪代码: DLL命令 Test1 int adress= Test1();//执行DLL命令,使其返回一个内存指针 char* pCh=new char[1024];//这里的数据类型为字节型,占用1个字节,值0-255 同易语言中的字节. 这里是申请一块字节型内存,内存大小为1024,然后用这块内存来存放DLL返回指针所指向的文本. 注意:如果没有申请内存,那么可以直接使用一个”字节型”的数组. RtlMoveMemory(pCh,adress,1024);//将指针指向的内容,复制到我们的变量中. BOOL bRet= VirtualFree((LPVOID)Ret,0,MEM_RELEASE);//最后是清理内存操作. 二.第二种方法 原理说明: 在程序中申请一块内存,把内存的地址传递给DLL,易语言直接对这块内存进行操作. 调用伪代码: DLL命令 Test2 char* pCh=new char[1024];//这回是自己申请一块字节型内存. ZeroMemory(pCh,1024);//清空内存. int Addr=(int)(pCh);//获取自己申请内存的地址. (*Test2)(Addr);//调用DLL命令 调用过后,pCh中既是DLL的返回文本. ======================================================================= |