C++中声明的int nDevAddr=0xffffffff;在C#中怎么声明
要调用C++的APIint ZAZGetImage(HANDLE hHandle,int nAddr);
nAddr 是常量声明为 0xffffffff;在C#调用如下:
[DllImport("ZAZAPIt.dll")]
public unsafe static extern int ZAZGetImage(IntPtr pHandle, int nAddr);
请问 在C#中nAddr 这个常量该为多少?
是设置为0吗? --------------------编程问答-------------------- uint nAddr = 0xffffffff; --------------------编程问答--------------------
因为C++函数指定了类型是int 如果声明uint的话需要转换成int类型会报溢出错误。
而且这个api所有函数中有int nAddr 都声明为常量的0xffffffff 不知道为什么? --------------------编程问答--------------------
那你传 -1 看看。 --------------------编程问答-------------------- 楼主,C++和C#的int 类型值范围区间一样,不需要改变,
const int nAddr = 0xffffffff;
有问题吗? --------------------编程问答--------------------
这样声明编译通不过的。 --------------------编程问答--------------------
或者改声明:
[DllImport("ZAZAPIt.dll")]
public static extern int ZAZGetImage(IntPtr pHandle, uint nAddr);
或者unchecked:
int nAddr = unchecked((int)0xffffffff);
--------------------编程问答--------------------
按照int nAddr = unchecked((int)0xffffffff); 得到的是-1 编译通过。但是函数返回值是错误的。
不知道在C++中声明int 0xffffffff参数的作用是什么? 如何用-1传过去跟0xffffffff作用是一样的吗? --------------------编程问答-------------------- 改声明:
[DllImport("ZAZAPIt.dll")]
public static extern int ZAZGetImage(IntPtr pHandle, uint nAddr);
补充:.NET技术 , C#