c++ c# imported

Soja 2014-01-26 04:37:22
c++定义:

typedef struct _GLYMODE{
unsigned int dwLockStatus;
unsigned int dwModeStatus;
}GLYMODE, *LPGLYMODE;

int GLY_DeGetMode(GLYHANDLE h, LPGLYMODE* lppDEModeData);

c# 转换:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct GlyMode
{
public uint dwLockStatus;
public uint dwModeStatus;
}

[DllImport(@"libglyde.dll", EntryPoint = "GLY_DeGetMode", CallingConvention = CallingConvention.Cdecl)]
public static extern int GLY_DeGetMode(int handle, IntPtr glyDeModeData);

我的问题是: 在方法import的时,方法参数我转换的对吗?还是写成:public static extern int GLY_DeGetMode(int handle, ref GlyMode glyDeModeData);

请高手帮忙,谢谢
...全文
112 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Soja 2014-01-26
  • 打赏
  • 举报
回复
问题解决了 [DllImport(@"libglyde.dll", EntryPoint = "GLY_DeGetMode", CallingConvention = CallingConvention.Cdecl)] public static extern int GLY_DeGetMode(int handle, ref IntPtr glyDeModeData);
bdmh 2014-01-26
  • 打赏
  • 举报
回复
每个struct中的字段也用Marshal进行封送,然后用 IntPtr ,至于ref是否可以,你可以实际测一下
Soja 2014-01-26
  • 打赏
  • 举报
回复
有高手吗? 请帮助下

110,536

社区成员

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

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

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