最近調用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怎麼填充。。
真心感激不盡。。
NULL傳IntPtr.Zero就可以了。