摘要: 原贴地址:http://blog.csdn.net/xiaogelee/archive/2007/12/04/1916716.aspx近日在C#中调用C++DLL的接口时,遇到了一些参数传递的问题,几经探索,问题终于解决,现整理如下,希望对各位P(rogrammer)友有所帮助:如果DLL接口的输入参数为char**,也就是字符数组的数组(即字符串数组),此时在C#声明中不能直接传递string[],传递的应该是通过Encoding类对这个string[]进行编码后得到的一个char[]。如果DLL接口的输出参数为char**,也就是字符数组的数组(即字符串数组),此时在C#声明中应该使用by 阅读全文
posted @ 2012-07-05 11:13 qimi 阅读(1479) 评论(0) 推荐(0) 编辑
摘要: handle---------IntPtrhwnd-----------IntPtrchar *----------stringint * -----------ref intint &-----------ref intvoid *----------IntPtrunsigned char *-----ref byteStruct需要在C#里重新定义一个StructCallBack回调函数需要封装在一个委托里,delegate static extern int FunCallBack(string str);注意在每个函数的前面加上public static extern +返回的 阅读全文
posted @ 2012-07-05 11:06 qimi 阅读(1366) 评论(0) 推荐(0) 编辑
摘要: 首先从msdn了解到,DllImport是用来将特性化方法由非托管动态链接库 (DLL) 作为静态入口点公开。从以上语句我们可以理解出三点:1.C++编写的非托管dll可以通过DllImport引入到C#中;2.引入到C#中的只能是C++方法(或者说函数),而不能是数据(或者说变量);3.引入到C#中后只能声明为静态函数;msdn关于DllImport属性类的链接:http://msdn.microsoft.com/zh-cn/library/system.runtime.interopservices.dllimportattribute(v=VS.100).aspxDllImport的其使 阅读全文
posted @ 2012-07-05 10:24 qimi 阅读(2609) 评论(0) 推荐(0) 编辑
摘要: DllImport所在的名字空间 using System.Runtime.InteropServices;MSDN中对DllImportAttribute的解释是这样的:可将该属性应用于方法。DllImportAttribute 属性提供对从非托管 DLL 导出的函数进行调用所必需的信息。作为最低要求,必须提供包含入口点的 DLL 的名称。DllImport 属性定义如下:namespace System.Runtime.InteropServices{ [AttributeUsage(AttributeTargets.Method)] public class DllImportAtt.. 阅读全文
posted @ 2012-07-05 09:46 qimi 阅读(3796) 评论(0) 推荐(0) 编辑