C#调用C++ DLL(构造体中二维数组转换)
C#调用C++ DLL(结构体中二维数组转换)
想在C# WinForm开发中调用一个采用C++封装好的dll, 但其结构体中的二维数组不知道应当如何转换, 网上搜索了一把P/Invoke资料相对来说比较少, 没有找到切实有用的文章, 现在调用虽不会报错了, 但没有产生预期效果.
------解决方案--------------------
关 注
------解决方案--------------------
------解决方案--------------------
up......
------解决方案--------------------
转换成一维数组处理,注意长度就行。
------解决方案--------------------
好高端啊,先顶后学
------解决方案--------------------
DING YI GE
想在C# WinForm开发中调用一个采用C++封装好的dll, 但其结构体中的二维数组不知道应当如何转换, 网上搜索了一把P/Invoke资料相对来说比较少, 没有找到切实有用的文章, 现在调用虽不会报错了, 但没有产生预期效果.
- C/C++ code
#define MAX_STRM_LAYER 3 // 最多几级流媒体 //服务器信息 typedef struct tagServerInfo { long uID; char csStrMIP[MAX_STRM_LAYER][16]; // 这个不知道如何转换 unsigned short nStrMPort[MAX_STRM_LAYER]; char csDdtIP[16]; unsigned short nDdtPort; unsigned short bIsWebUser; unsigned short protocolType; const char *pcUserName; const char *pcPassword; char csStoreFileSvrIP[16]; unsigned short nStoreFileSvrPort; char csDevFileSvrIP[16]; unsigned short nDevFileSvrPort; }TServerInfo, *LPServerInfo; LONG __stdcall StrM_Login(LPServerInfo mts, int iLayer = 1);
- C# code
/// <summary> /// 最多几级流媒体 /// </summary> public const int MAX_STRM_LAYER = 3; /// <summary> /// 服务器信息 /// </summary> [StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)] public struct TServerInfo { public int uID; [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.LPStr)] public string[] csStrMIP; public ushort[] nStrMPort; [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)] public string csDdtIP; public ushort nDdtPort; public ushort bIsWebUser; public ushort protocolType; public string pcUserName; public string pcPassword; [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)] public string csStoreFileSvrIP; public ushort nStoreFileSvrPort; [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)] public string csDevFileSvrIP; public ushort nDevFileSvrPort; } [DllImport("StreamMedia.dll")] public static extern int StrM_Login(ref TServerInfo mts, int iLayer);
------解决方案--------------------
关 注
------解决方案--------------------
------解决方案--------------------
up......
------解决方案--------------------
转换成一维数组处理,注意长度就行。
------解决方案--------------------
好高端啊,先顶后学
------解决方案--------------------
DING YI GE