首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C#调用返回具有固定大小字符数组的结构的C函数

C#调用返回具有固定大小字符数组的结构的C函数
EN

Stack Overflow用户
提问于 2012-04-26 01:10:02
回答 3查看 8.5K关注 0票数 18

所以,这个问题有很多变体,在看了几个之后,我仍然无法理解。

这是C代码:

代码语言:javascript
复制
typedef struct
{
unsigned long Identifier;
char Name[128];
} Frame;

Frame GetFrame(int index);

这是C#代码:

代码语言:javascript
复制
struct Frame
{
    public ulong Identifier;
    [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = 128)]
    public char[] Name;
}

[DllImport("XNETDB.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
private static extern Frame GetFrame(int index);

这是我在C#中尝试的最后一次尝试,看起来非常合理,但是我得到错误消息"Method's signature is not PInvoke compatible“。所以,我有点不知道下一步该怎么做。任何帮助都是非常感谢的。

谢谢,凯文

更新了 Kevin在我的回答中添加了这个编辑

我应该改为更改我的C代码:

代码语言:javascript
复制
void GetFrame(int index, Frame * f);

并将其用于C#:

代码语言:javascript
复制
struct Frame
{
    public uint Identifier;
    [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 128)]
    public string Name;
}

[DllImport("XNETDB.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
private static extern void GetFrame(int index, ref Frame f);
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10320502

复制
相关文章

相似问题

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