有关用C#调用VC的DLL的接口问题

Emma_Hugo 2009-04-21 05:57:37
vc被调函数:
int WINAPI LoadPointsFromScreen( ALLPOINTS v_points );
其中:
struct ALLPOINTS
{
int points_num; //数量
POINT* points_pos; //值
};
--------------------------------------------------
c#中定义该结构体:
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int x;
public int y;
}

[StructLayout(LayoutKind.Sequential)]
public struct ALLPOINTS
{
public int points_num;
public IntPtr points_pos;
}
定义该函数:
[DllImport("SelectAutoFitArea.dll")]
extern static int LoadPointsFromScreen(ALLPOINTS v_points);

可是在调用的时候,我该如何为参数赋值啊?因为里面有一个指针。
我现在有一个POINT类型的数组,应该怎么把它转化为IntPtr类型???
...全文
69 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Garnett_KG 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gomoku 的回复:]
C# codePoint[] points=...;
GCHandle gch=GCHandle.Alloc(points, GCHandleType.Pinned);
v_points.points_num=points.Length;
v_points.points_pos=gch.AddrOfPinnedObject();
{
LoadPointsFromScreen(v_points);
}
gch.Free();
[/Quote]
ding
蓝海D鱼 2009-04-23
  • 打赏
  • 举报
回复
up
wjf8882300 2009-04-23
  • 打赏
  • 举报
回复
用数组,C++中的指针转到C#中就只有用数组做了.
xufzu123 2009-04-21
  • 打赏
  • 举报
回复
没遇到过~up
gomoku 2009-04-21
  • 打赏
  • 举报
回复

Point[] points = ...;
GCHandle gch = GCHandle.Alloc(points, GCHandleType.Pinned);
v_points.points_num = points.Length;
v_points.points_pos = gch.AddrOfPinnedObject();
{
LoadPointsFromScreen(v_points);
}
gch.Free();

111,126

社区成员

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

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

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