小编use*_*675的帖子

尝试使用char *数据封送结构,但data为空

我的C#中有一个结构,如下所示:

[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
public struct UserProfileData
{
    int userProfileRevision;
    [MarshalAs(UnmanagedType.LPStr)] 
    public String firstName;
    [MarshalAs(UnmanagedType.LPStr)] 
    public String lastName;
    [MarshalAs(UnmanagedType.LPStr)] 
    public String memberids;
    [MarshalAs(UnmanagedType.LPStr)] 
    public String emailAddress;
}
Run Code Online (Sandbox Code Playgroud)

我通过了这个

typedef struct userProfile
{
    int profileRevision;
    char *firstName;
    char *lastName;
    char *memberids;
    char *emailAddress;
} userProfile_t;
Run Code Online (Sandbox Code Playgroud)

我的C .dll具有这样的功能

int getUserProfileData(userProfile_t *pUserProfile);
Run Code Online (Sandbox Code Playgroud)

以获取上述结构中字符串的值。我从C#代码中调用此函数,并正确填充了int值'profileRevision'。像“ firstname”这样的字符串会在上述C函数中正确动态分配并填充但是当代码返回C#环境时,该结构中的所有字符串均为null。处理此问题的最佳方法是什么?

c# dll pinvoke struct marshalling

5
推荐指数
1
解决办法
1683
查看次数

将标准错误重定向到C中的字符串

我希望能够将stderr重定向到C字符串,因为我需要在我正在编写的程序中使用该字符串.我想避免写入文件(在硬盘上),然后读取文件以获取字符串.完成这项工作的最佳方法是什么?

c string stderr io-redirection

4
推荐指数
2
解决办法
5793
查看次数

标签 统计

c ×1

c# ×1

dll ×1

io-redirection ×1

marshalling ×1

pinvoke ×1

stderr ×1

string ×1

struct ×1