c#调用c++函数类型问题

ko_aaaa 2011-09-20 04:32:24

c++中调用:完全没问题


typedef struct _MSG_BODY_USER
{
char szStuID[DATABASE_USER_SECTION_LEN];
}MSG_BODY_USER, *PMSG_BODY_USER;

MSG_BODY_USER msg;
long lErrorCode;
memset((char*)&msg, 0, sizeof(msg));
char szStuID[DATABASE_USER_SECTION_LEN];
char str[] = "28363131";
memcpy(msg.szStuID, str, strlen(str));
lErrorCode = m_CvsCtrl.OperateUser(CVS_IP, CVS_OPT_ADD, (long*)&msg, sizeof(msg));
TRACE("msg resp is: 0x%x\n", lErrorCode);



c#调用插入的数据是乱码????! 为什么??
public struct _MSG_BODY_USER
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string szStuID;
}

_MSG_BODY_USER user = new _MSG_BODY_USER();

user.szStuID = userid;

int size = Marshal.SizeOf(user);
IntPtr structPtr = Marshal.AllocHGlobal(size);
Marshal.StructureToPtr(user, structPtr, false);

int j = structPtr.ToInt32();


int j = axCvsInterface1.OperateUser(ip1, id, ref p, size); //调用c++的控件函数 ,为什么会插

入乱码?

// 这个因为是调用的c++ 所以类型不可更改 第三个变量是ref int 类型 没办法才不用 intptr的 插入乱码是为什么?



求解 - -!
...全文
94 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yojinlin 2011-09-21
  • 打赏
  • 举报
回复
友情幫頂。
sdl2005lyx 2011-09-20
  • 打赏
  • 举报
回复
楼主,不要在发帖了,留点分吧。这个问题,你一下子很难描述清楚,没有深入了解,别人很难知道你的问题所在,我明天用非安全unsafe代码测试,看看行不行。。。。
jimh 2011-09-20
  • 打赏
  • 举报
回复

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi]
public struct _MSG_BODY_USER
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string szStuID;
}


使用了ByValTStr,请指定CharSet,否则会使用默认的Unicode,导致字符串错误。
ko_aaaa 2011-09-20
  • 打赏
  • 举报
回复
上面那个 在我的界面里也确实是这么定义的! 起始这个结构体还有好多成员 我只是拿了一个成员出来了
  • 打赏
  • 举报
回复
,楼主我顶一下
ko_aaaa 2011-09-20
  • 打赏
  • 举报
回复
改过 不是这个问题 我试过很多类型 所以这些会有重名的变量 和他没关系 我粘错了 ! 都是编译过的 只是插入会乱码 可以运行的.....
jimh 2011-09-20
  • 打赏
  • 举报
回复

//先把这句改正了再说,难道楼主没有编译过?
//int j = structPtr.ToInt32();
int p = structPtr.ToInt32();
ko_aaaa 2011-09-20
  • 打赏
  • 举报
回复
还顶下 顶顶顶顶顶顶顶顶顶顶顶顶顶
ko_aaaa 2011-09-20
  • 打赏
  • 举报
回复
都没人来解决这个问题吗!我是只能给100分了 还少呀! 不管有没有解决 明天12点就结贴! 如果你顶的给力 就有分 ! 好吧! 如果没解决 分给你们后再提..... 都来顶 不明白也可以问

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧