首页 > 作文

关于C# 调用Dll 传递字符串指针参数的问题

更新时间:2023-04-04 14:35:50 阅读: 评论:0

最近用c#写一个小软件,要调用vc写的dll,传递参数给dll,由于是非托管代码,所以调用起来有点麻烦,要把参数转换成非托管代码的指针参数,然后再传递给dllview plaincopy to clipboardprint?

using system.runtime.interoprvices;   //操作dll的类空间      class cgicomindex      {          [dllimport("index_dll.dll")]          unsafe private static extern int32 create_index_file(intptr filename, intptr fieldname, uint32 tongshu, intptr err);          //vc原型 create_index_file( char*filename, char * fieldname, unsigned long tongshu, char *err);           #region " bool createindexfile( string m_strfilename, string m_strfieldname, uint32 m_key, ref string strerr ) 对dbf文件按照指定的字段创建索引"           /// <summary>           /// 对dbf文件按照指定的字策划方案格式段创建索引           /// </summary>           /// <param name="m_strfilename">dbf文件路径</param>           /// <param name="m_strfieldname">创建索引的字段名称</param>           /// <param name="m_key">索引桶数(文件记录的最大数)</param>           /// <param name="strerr">出错信息</param>           /// <returns>成功 true</returns>           public static bool createindexfile( string m_strfilename, string m_strfieldname, uint32 m_key, ref string strerr )          {              try              {                  intptr ptrfilename, ptrfieldname, ptrerr;                    //根据数据的长度申请非托管空间                   ptrfilename = mallocintptr(m_strfilename);                  ptrfi我最喜欢的一门功课eldname = mallocintptr(m_strfieldname);                  ptrerr = mallocintptr(300);                    //创建索引                   if (create_index_file(ptrfilename, ptrfieldname, m_key, ptrerr) != 1)                  {                      strerr = marshal.ptrtostringansi(ptrerr);                      marshal.freehglobal(ptrfilename);                      marshal.freehglobal(ptrfieldname);                      marshal.freehglobal(ptrerr);                      return fal;               孔子语录   }                  marshal.freehglobal(ptrfilename);                  marshal.freehglobal(ptrfieldname);                  marshal.freehglobal(ptrerr);                  return true;              }              catch (system.exception ex)              {                  strerr = ex.message;                  return fal;              }          }    全国重点大学      #endregion           #region " intptr mallocintptr( string strdata ) 根据数据的长度申请非托管空间"           /// <summary>           /// 根据数据的长度申请非托管空间           /// </summary>           /// <param name="strdata">要申请非托管空间的数据</param>           /// <returns>指向非拖管空间的指针</returns>           private static intptr mallocintptr( string strdata )          {              //先将字符串转化成字节方式               byte[] btdata = system.text.encoding.default.getbytes(strdata);                //申请非拖管空间               intptr m_ptr = marshal.allochglobal(btdata.length);                //给非拖管空间清0                byte[] btzero = new byte[btdata .leng小学生军训作文th+ 1]; //一定要加1,否则后面是乱码,原因未找到               marshal.copy(btzero, 0, m_ptr, btzero.length);                //给指针指向的空间赋值               marshal.copy(btdata, 0, m_ptr, btdata.length);                return m_ptr;          }            /// <summary>           /// 根据长度申请非托管空间           /// </summary>           /// <param name="strdata">要申请非托管空间的大小</param>           /// <returns>指向非拖管空间的指针</returns>           private static intptr mallocintptr( int length )          {              //申请非拖管空间               intptr m_ptr = marshal.allochglobal(length);                //给非拖管空间清0                byte[] btzero = new byte[length + 1]; //一定要加1,否则后面是乱码,原因未找到               marshal.copy(btzero, 0, m_ptr, btzero.length);                //给指针指向的空间赋值               marshal.copy(btzero, 0, m_ptr, length);                return m_ptr;          }          #endregion       }  

到此这篇关于c# 调用dll 传递字符串指针参数的文章就介绍到这了,更多相关c# 字符串指针参数内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 14:35:48,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/81b619e4d93836ceaa9ab2d499b11e3e.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:关于C# 调用Dll 传递字符串指针参数的问题.doc

本文 PDF 下载地址:关于C# 调用Dll 传递字符串指针参数的问题.pdf

标签:空间   指针   索引   参数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图