读书人

C++的dll这个方法用C#调用参数如何

发布时间: 2012-03-12 12:45:33 作者: rapoo

求救,C++的dll,这个方法用C#调用参数怎么定义?
int __stdcall M100_ReadMagcardDecode(HANDLE ComHandle, BYTE _track, DWORD *_DataLen,BYTE _BlockData[]);

[解决办法]
参数大约这样:

public static int M100_ReadMagcardDecode(IntPtr ComHandle, byte _track, uint _DataLen[], byte _BlockData[]);
[解决办法]

C# code
在web 里这么写   这是以前写过的 也是网上找的,可以实现,lz在自己查查吧。    class DllDynamic:IDisposable//这个类是固定的    {        [DllImport("Kernel32.dll")]        public static extern int LoadLibrary(string lpFileName);        [DllImport("Kernel32.dll")]        public static extern bool FreeLibrary(int hModule);        [DllImport("Kernel32.dll")]        public static extern IntPtr GetProcAddress(int hModule, string lpProcName);        #region IDisposable 成员        public void Dispose()        {            throw new NotImplementedException();        }        #endregion    }''''''调用   int hLib = DllDynamic.LoadLibrary(path);//应用dll的路径   IntPtr ptr = DllDynamic.GetProcAddress(hLib, "SS_Open_Tcp");                SS_Open_Tcp opentcp = (SS_Open_Tcp Marshal.GetDelegateForFunctionPointer(ptr, typeof(SS_Open_Tcp));//dll里的方法(SS_Open_Tcp)int numtcp = opentcp(sIP, port, delay);//打开连接(调用)
[解决办法]
如果你要改变数组的值必须使用地址传递

读书人网 >C#

热点推荐