急!C#调用DLL函数,有个结果取不到,是怎么回事?请知秋一叶等大侠帮忙。

njzc 2002-05-29 01:29:09
C写的DLL中,函数int FunctionA(int nNum,StructA *pStructA);
StructA
{
int nAge;
char cName[20];
char cClass[10];
char cFlag;
};

我在C#中声明,
[StructLayout(LayoutKind.Sequential)]
public struct StructA
{
public int nAge;
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=20 )]
public string cName;
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=10 )]
public string cClass;
public int cFlag;
}

[DllImport("..\\..\\lib\\MyDll.dll",EntryPoint="FunctionA")]
public static extern int FunctionA(int nNum,[In,Out] ref StructA structA);

调用:
StructA structA=new StructA();
int nNum=0;
int a=FunctionA(nNum,ref structA);

现在问题是调用的时候,除了cClass,其他值都可以取到,我取出来的cClass是个空字符串,这个是怎么回事?该如何解决?急!
...全文
18 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qqchen79 2002-05-29
我试了一下,没问题的。
可能是C一边用法由问题,把你的程序简化以下贴出来吧。
回复
anggogo 2002-05-29
有这么奇怪的事情?

为什么不把顺序调换一下?
回复
njzc 2002-05-29
如果用VC++是可以取出来的。这是怎么回事?
由于必须要使用C#,所以不能用VC++
回复
相关推荐
发帖
C#
创建于2007-09-28

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2002-05-29 01:29
社区公告

让您成为最强悍的C#开发者