想用C# 做一动态库 比如有下面这样的一个函数声明 public int ID(int hScan,int len, byte[] Buffer, nCounter);
{
....
}
函数执行完成后,得到三个值,分别存在 int hScan,int len, byte[] Buffer 这三个变量里 当在应用程序里调用这个函数时,可以不如下这么用?
res = Program.ID(hScan, len, IDBuffer, nCounter);
if (res == OK)
{
for (i = 0; i < nCounter; i++)
{
temp = Buffer[len] * 2 + 1;
}
}
也就是DLL 文件里函数执行完成后, 返回值都存在 函数的形参里 然后在调用DLL 时,,也可以直接用 要这么做,需要注意哪些?
谢谢
{
....
}
函数执行完成后,得到三个值,分别存在 int hScan,int len, byte[] Buffer 这三个变量里 当在应用程序里调用这个函数时,可以不如下这么用?
res = Program.ID(hScan, len, IDBuffer, nCounter);
if (res == OK)
{
for (i = 0; i < nCounter; i++)
{
temp = Buffer[len] * 2 + 1;
}
}
也就是DLL 文件里函数执行完成后, 返回值都存在 函数的形参里 然后在调用DLL 时,,也可以直接用 要这么做,需要注意哪些?
谢谢
public int ID(out int hScan,out int len,out byte[] Buffer, nCounter);
{
....
}
再描述一下 比如,,VC写的DLL
public int ID(HANDLE * hScan,int len, byte * Buffer, int * nCounter); 在.NET 环境调用 ID 函数,,执行过后,, 上面的函数里,,有三个形参的值,是函数执行过后,三个形参保留值了
在C#里,,再声明三个变量,,带入上面的函数,,
上面函数的三个形参的值将 填入 在C#里声明的三个变量中去
{
a = 10;
buffer[0] = 0xff;
nCounter = 2;
}out byte[] buffer 这第二个参数报错去掉这个参数,,函数声明就正常,,,在调用这个函数时,也是OK 的,,和上面描述的效果一样想要形参里有一个字节数组参数,,应该如何弄?
谢谢
数组传本身就是引用,不需要再加out
一时忘了,数组本身就是引用类型的,
不用out,
你在方法外部直接声明一个数组类型,直接调用就行了,关于值类型和引用类型,可以看看MSDN:
值类型和引用类型:
http://msdn.microsoft.com/zh-cn/library/t63sy5hs(VS.80).aspx常规类型系统:
http://msdn.microsoft.com/zh-cn/library/zcx1eb1e.aspx