C# 调用易语言dll 返回文本参数
来源:互联网 发布:golang 大文件上传 编辑:程序博客网 时间:2024/06/08 12:13
文本参数 涉及非托管内存操作,给出两种解决方案:
1,在易语言dll(被调用者)中申请内存,返回内存指针和长度,在C#(调用者)中取出文本并释放内存资源;
易语言dll函数:
相对应C#调用函数,需要引用命名空间:using System.Runtime.InteropServices;
[DllImport("91vpn.dll")] public static extern bool AutoConnect(ref int msg,ref int bufferlen);private void buttonConnect_Click(object sender, EventArgs e) { string msg = null; int bufferlen = 0; int buffer = 0; bool ret = _91vpn.AutoConnect(ref buffer, ref bufferlen); IntPtr bufferptr = new IntPtr(buffer); msg = Marshal.PtrToStringAnsi(bufferptr,bufferlen); Marshal.FreeHGlobal(bufferptr); MessageBox.Show(msg); }
2,在C#(调用者)中申请非托管内存传递给dll,在易语言dll(被调用者)中 使用 写入内存()函数,将文本写入内存,在C#(调用者)中取出文本并释放内存资源;
易语言dll函数:
相对应C#调用函数,需要引用命名空间:using System.Runtime.InteropServices;
[DllImport("91vpn.dll")] public static extern bool AutoConnect(IntPtr msg, int bufferlen);private void buttonConnect_Click(object sender, EventArgs e) { string msg = null; int bufferlen = 1024; IntPtr buffer = Marshal.AllocHGlobal(bufferlen); bool ret = _91vpn.AutoConnect(buffer, bufferlen); msg = Marshal.PtrToStringAnsi(buffer); Marshal.FreeHGlobal(buffer); MessageBox.Show(msg); }
0 0
- C# 调用易语言dll 返回文本参数
- vs2010 vc++ 写成dll 被易语言dll 调用然后返回文本
- 易语言dll中文本型参数或返回值在其他语言中调用异常问题
- C#调用易语言返回字符串
- C# 调用C/C++ Dll(参数含char*指针,返回char*指针)
- C#调用C++的Dll(参数和返回值為char* TCHAR*)
- Unity使用C#调用C++dll传递指针参数、接收指针返回值
- C#调用C++的Dll(参数和返回值為char* TCHAR*)
- C#调用易语言写的Dll文件
- C#调用易语言写的Dll文件
- 易语言写DLL给C#调用读写注册表
- C# 调用Dll 传递字符串指针参数
- c# 调用有字符串参数的 DLL
- c#调用c++ dll 参数对应
- C# 调用Dll 传递字符串指针参数
- C#调用DLL时参数问题
- C# 调用C++DLL参数异常解决方法
- c#调用C++DLL参数对应
- Websocket协议数据帧传输和关闭连接
- Json - Java
- 防火墙的长连接和短连接相关命令
- cocos2dx kazmath 分析
- android,PHP解析JSON数组,JSONArray,JSONOject,乱码
- C# 调用易语言dll 返回文本参数
- Win8系统VS2012无法破解Devexpress13.2解决方法
- 本文利用matlab创建了一个小型数据库写入excel用于调用
- C#特性杂谈
- eclipse自动补全的设置
- LeetCode(34)SearchInsertPosition
- 三种安卓模拟器的安装和比较
- 让我静数你创业踌躇的脚步——那是为你腾飞助跑一路
- hadoop 在mac上伪分布配置