首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将C char[][]数组配置为C#

将C char[][]数组配置为C#
EN

Stack Overflow用户
提问于 2013-09-09 19:50:47
回答 2查看 3.7K关注 0票数 5

我看过,看过,试过了我能想到或找到的所有建议。我还是没办法拿到我需要的数据。

我使用的是第三方DLL,我相信它是用C编写的。我需要在C#中访问这个DLL的函数。在大多数情况下,我有这个工作,除了一个功能。我遇到问题的函数有以下标题:

代码语言:javascript
复制
uint queryNumOfServers(USHORT *NumOfServers, char ServerNames[8][16]);

我在我的C#应用程序中声明了以下内容

代码语言:javascript
复制
[DllImport("client.dll", CharSet=CharSet.Ansi]
public static extern uint queryNumOfServers(ref short numberofServer, StringBuilder serverNames);

我这样称呼如下:

代码语言:javascript
复制
StringBuilder serverNames = new StringBuilder(128);
short numServers = -1;
queryNumberOfServers(ref numServers, serverNames);

问题是,虽然numberOfServers返回值等于4,但在serverNames中只有一个名称。我在一个小的C程序中测试了上面的C函数。我得到了numberOfServer =4,但我也得到了4个名字。

我尝试了以下几点,但没有成功:

代码语言:javascript
复制
[DllImport("client.dll", CharSet=charSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern uint queryNumOfServers(ref short numberOfServer,[MarshalAs(UnmanagedType.LPStr)] string serverNames);

把这个叫做

代码语言:javascript
复制
string serverNames = new string('\0', 128);
queryNumOfServers(ref numServers, serverNames);

使用此选项对serverNames没有任何更改。

开发环境是Visual 2008。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-16 22:13:54

经过多次搜索和拔毛,这是对我有效的解决方案。

将我的C#应用程序中的函数头声明为:

代码语言:javascript
复制
[DllImport("client.dll", CharSet = CharSet.Ansi)]
public static extern uint queryNumOfServers(ref short numberOfServers, [MarshalAs(UnmanagedType.LPArray)] byte[,] serverNames);

然后按以下方式调用:

代码语言:javascript
复制
byte[,] serverNames = new byte[8,16];
short numServers = -1;
queryNumberOfServers(ref numServers, serverNames);

这将返回一个双索引字节数组。从这里开始,我使用Buffer.BlockCopy()和Encoding.UTF8.GetString()将字节数组转换为字符串数组。

票数 3
EN

Stack Overflow用户

发布于 2013-09-09 19:56:50

我会使用[StructLayout(LayoutKind.Sequential...][MarshalAs(UnmanagedType.ByValTStr...]

以下是两个很好的例子:

编组C_2维定长焦阵

将C++二维固定长度字符数组编组为结构成员

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18705857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档