[英]c# interop with unmanaged dll
我要制作的是CUDA加速分形生成器。 我想使用c#创建ui,但是分形图像是由dll中编译的非托管cuda c生成的。 在完成一些教程之后,我设法使interop可以处理简单的数据,但是在创建位图图像并将其传递回c#应用程序时遇到了困难。
我可以使用CUDA成功地将dll中的缓冲区与像素数据放在一起,但是如何使用指向该缓冲区的指针在c Sharp应用程序中创建位图?
某些方法之一:
如果您的本机函数如下所示:
void foo(void *bitmap);
您可以使用P / Invoke声明:
[DllImport(...)]
public static unsafe void foo(void *bitmap);
然后按如下方式使用它:
unsafe
{
byte[] buffer = new byte[...];
fixed (void *pBuffer = buffer)
{
foo(pBuffer);
}
}
请注意,您应该允许使用不安全的代码(在项目设置的“构建”选项卡中)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.