飞刀杂耍者 2015-09-15 10:29 采纳率: 14.3%
浏览 1878
已采纳

新人求问,C#调用C++dll,C++函数中有NULL参数,我转换到C#该怎么改。。

最近调用C++dll,各种问题,烦死了都要。。求各位帮助。。
C++
DEVICE_ID APICALL NSSTCreateDevice(
NsstDevice* device,
AppProxy* proxy
);
其中NsstDevice和 AppProxy是结构,调用时这样的:**DEVICE_ID id = NSSTCreateDevice(&device,NULL);**

今天花了好大功夫转换了C#结构,这是其中一个:
public struct NsstDevice
{
//设备IP
//[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
public string host;

    //协议端口,默认80
    public  UInt16 protocol_port;
    //rtsp数据端口,默认554
    public UInt16 rtsp_port;
    //用户名
    //[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string username;

    //密码
    //[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string password;
    //产品系列               

    public NSST_DEVICE_TYPE dev_type;
}

然后赋值了:
NsstDevice Ndevice;
Ndevice.host="192.168.1.109";
Ndevice.username = "admin";
Ndevice.password = "admin";
Ndevice.protocol_port = 80;
Ndevice.rtsp_port = 554;
Ndevice.dev_type = NSST_DEVICE_TYPE.NSSTDEV_H;(大家看看到这有没有问题。。)
但是第二个参数搞不定了。。。
我在C#中是这样写的:
public extern static UInt16 NSSTCreateDevice([In(), Out()] ref NsstDevice device ,ref AppProxy proxy);(不知道inout那里有没有用。。)
调用的时候第二个NULL我不知道该怎么写,对于引用不太了解唉。。
device_id = InitLogin.NSSTCreateDevice(ref Ndevice,×××××××××××××××× );求大家帮我看看第二个NULL怎么填充。。
真心感激不尽。。

  • 写回答

3条回答 默认 最新

  • threenewbee 2015-09-15 10:36
    关注

    NULL传IntPtr.Zero就可以了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 无源定位系统的时差估计误差标准差
  • ¥15 请问这个代码哪里有问题啊
  • ¥20 python--version在命令端输入结果Python is not defined怎么办?还有pip不是exe格式是不是没安装成功?
  • ¥15 通过GaussianView进行结构微调消除虚频
  • ¥15 调用transformers库
  • ¥15 由于导出的数据名字中带有/,导致Matlab打不开,怎么办?
  • ¥15 新硬盘安装的程序总是崩溃,提示遇到错误
  • ¥15 openpcdet自制数据集评估bev精度和3d精度相同
  • ¥15 excel 上下按钮 显示行
  • ¥20 云卓h12pro 数传问题