C#中调用dll,函数参数带指针,如何改写?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中调用dll,函数参数带指针,如何改写?相关的知识,希望对你有一定的参考价值。
原动态链接库UA300.DLL中的函数原型为:
void_stdcall readdata(HANDLE husb, short* addat, unsigned short fcode, long leng)
在C#中调用,如下改写是否正确?
[DllImport("UA300.DLL", CharSet = CharSet.Unicode, EntryPoint = "readdata",SetLastError=true,ExactSpelling=true,CallingConvention=CallingConvention.StdCall,PreserveSig=true)]
unsafe public static extern void readdata(IntPtr husb,
short* addat, ushort fcode, Int32 leng);
unsafe public short[] data = new short[4096];
unsafe private void button1_Click(object sender, EventArgs e)
fixed (short* k = data)
readdata(husb, k , 3000, 256);
试了,还是不行,到底应该怎么写啊??急求解决方法!非常感谢大家帮忙
能就我提问的函数给具体改写一下吗?我是个初学者
把“short*”改为“ref short”
[DllImport("UA300.DLL", CharSet = CharSet.Unicode, EntryPoint = "readdata",SetLastError=true,ExactSpelling=true,CallingConvention=CallingConvention.StdCall,PreserveSig=true)]
unsafe public static extern void readdata(IntPtr husb,
ref short addat, ushort fcode, Int32 leng);
调用时也加上ref:
readdata(husb, ref k , 3000, 256); 参考技术A 不知道你能不能看到我空间的日志...
http://user.qzone.qq.com/37208828?ptlang=2052
《与非托管Dll的交互》
网上很多方法都不行 研究的三天才知道的
以上是关于C#中调用dll,函数参数带指针,如何改写?的主要内容,如果未能解决你的问题,请参考以下文章