关于c# 调用C++dll,坐等强人出现!

cdreams 2011-04-23 06:44:27
我想调用一个C++DLL文件里一个函数,函数原型如下:
generate_container(int quantity, int destination, int weight,int ** Container)
其中的最后一个形参是要用来输出的,我想问的是,在c#声明这个函数时,最后一个参数应该如何声明?
我还要调用另一个函数,里面的参数有四维整型指针变量,更不知道应该如何弄了.

大家帮帮忙,这东西比较急,我学C#时间不长,这东西弄了好长时间了,谢谢啦!
...全文
412 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
rabbitlzx 2011-05-04
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 fjcfjcfjcfjc 的回复:]

引用 20 楼 rabbitlzx 的回复:
引用 19 楼 fjcfjcfjcfjc 的回复:

引用 14 楼 rabbitlzx 的回复:
out IntPtr

具体怎么操作啊?试了好久,都写不对啊!



[DllImport("XXXX.dll")]
public static void generate_container(int quantity, int ……
[/Quote]

这是从IntPtr中读取到一维数组,二维的就是两层遍历
private void HandleReturnedErrorCodes(IntPtr errors, int count)
{
IntPtr arrayPointer = Marshal.ReadIntPtr(errors);
int[] errorCodes = new int[count];
int errorValue = 0;
for (int i = 0; i < count; ++i)
{
errorValue = Marshal.ReadInt32(arrayPointer, i * Marshal.SizeOf(typeof(Int32)));
errorCodes[i] = errorValue;
}
}
cdreams 2011-04-29
  • 打赏
  • 举报
回复
高手在哪里啊??????????????????????????
cdreams 2011-04-27
  • 打赏
  • 举报
回复
郁闷啊,明天又要开会了,连续好几个星期都跟老师说没弄出来,我都不好意思继续说没弄出来了!!!我的救星在哪里哦!!!!!!!!!!!!!
cdreams 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 flywei123 的回复:]
引用 3 楼 xiehuijianlove 的回复:
generate_container(int quantity, int destination, int weight,out int Container)
[/Quote]
呵呵,这个对于一维指针倒是可以的,二维就不行咯!
flywei123 2011-04-27
  • 打赏
  • 举报
回复
引用 3 楼 xiehuijianlove 的回复:
generate_container(int quantity, int destination, int weight,out int Container)


cdreams 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 mjp1234airen4385 的回复:]
这个东西需要看dll是如何写的了。
问清楚最后一个参数是干什么的。
在dll内部是如果处理的。
最后你就知道如何定义和传入参数了。
[/Quote]
那个二维指针是用来返回一个二维数组的,当然DLL文件中对它赋了值。
看着你和你楼下那位仁兄的图像,真是纠结呀!呵呵
cdreams 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 rabbitlzx 的回复:]
引用 19 楼 fjcfjcfjcfjc 的回复:

引用 14 楼 rabbitlzx 的回复:
out IntPtr

具体怎么操作啊?试了好久,都写不对啊!



[DllImport("XXXX.dll")]
public static void generate_container(int quantity, int destination, int weight, ……
[/Quote]

那个二维指针是用来返回一个二维数组的,那按你所说的方法调用后,怎样才能把这个数组的值输出来呢?假如这个数组是5*5的。
visir 2011-04-27
  • 打赏
  • 举报
回复
听说用ref int[]可以, 呵呵
mjp1234airen4385 2011-04-27
  • 打赏
  • 举报
回复
这个东西需要看dll是如何写的了。
问清楚最后一个参数是干什么的。
在dll内部是如果处理的。
最后你就知道如何定义和传入参数了。
西门喷血 2011-04-27
  • 打赏
  • 举报
回复
[DllImport("kernel32.dll")]

public static extern int GetProcAddress(int hModule, string lpProcName);
这是调用系统API的
C++的雷同
rabbitlzx 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 fjcfjcfjcfjc 的回复:]

引用 14 楼 rabbitlzx 的回复:
out IntPtr

具体怎么操作啊?试了好久,都写不对啊!
[/Quote]


[DllImport("XXXX.dll")]
public static void generate_container(int quantity, int destination, int weight, out IntPtr Container)


调用时
IntPtr container = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(Int32)));
generate_container( ..., out container);


cdreams 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 rabbitlzx 的回复:]
out IntPtr
[/Quote]
具体怎么操作啊?试了好久,都写不对啊!
cdreams 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wangrui0610 的回复:]
int 对应 C#中 byte
参数写法:out byte[][] Container
[/Quote]
呵呵,谢谢啦,数组应该是不行的,我都试过了
cdreams 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 csrwgs 的回复:]
拿分

把指针转换成IntPTR
用Marshal.UseUnsafe....
[/Quote]
大哥,能说具体点吗?
showjancn 2011-04-25
  • 打赏
  • 举报
回复
好好研究一下“IntPtr” C#的这个类型,可以解决大部分从C++库中的转换问题。
rabbitlzx 2011-04-25
  • 打赏
  • 举报
回复
out IntPtr
csrwgs 2011-04-25
  • 打赏
  • 举报
回复
拿分

把指针转换成IntPTR
用Marshal.UseUnsafe....
shrinerain 2011-04-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wangrui0610 的回复:]
int 对应 C#中 byte
参数写法:out byte[][] Container
[/Quote]

-_-b
pluojie8 2011-04-25
  • 打赏
  • 举报
回复
sv2005在哪里下载好点
大笨蛋 2011-04-25
  • 打赏
  • 举报
回复
int 对应 C#中 byte
参数写法:out byte[][] Container
加载更多回复(8)
随着元宇宙概念兴起与虚拟数字人技术快速发展,虚拟主播、在线教育虚拟助教、元宇宙社交等应用场景对实时动作表情驱动系统提出更高需求。当前主流动作捕捉方案多依赖专业光学动捕设备或深度相机,设备成本高昂、部署复杂,难以在普通用户场景普及。本研究设计并实现一套基于普通单目摄像头的虚拟数字人实时动作表情驱动系统,旨在降低数字人内容生产门槛。系统采用Unity作为主开发引擎,结合Blender进行数字人模型构建与BlendShape表情系统制作,使用MediaPipe框架实现人脸关键点检测与人体姿态估计,通过C#脚本完成实时数据处理与渲染控制。系统包含五个关键模块:人脸关键点检测(MediaPipe Face Mesh提取468个关键点)、人体姿态估计(MediaPipe Pose识别33个骨骼关键点)、表情迁移映射、动作平滑优化(卡尔曼滤波与贝塞尔曲线插值消除抖动)、实时渲染(60fps流畅渲染,支持直播推流与视频录制)。实验结果表明,系统在普通笔记本上可实现60fps实时驱动,人脸关键点检测准确率达98.7%,人体姿态估计平均误差小于5像素,表情迁移相似度达92.3%。 【课程报告内容】 摘要 第1章 绪论 第2章 相关技术与理论基础 第3章 系统架构设计 第4章 关键模块设计与实现 第5章 实验与结果分析 第6章 总结与展望 参考文献

111,129

社区成员

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

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

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