c#与非托管dll互操作

时间:2013-11-24 18:20:01

标签: c# dll cuda

我想要做的是CUDA加速分形发生器。我想使用c#来创建ui,但分形图像是由在dll中编译的非托管cuda c生成的。在一些教程之后,我设法使用简单的数据进行互操作,但是我很难创建位图图像并将其传递回c#应用程序。

我可以使用CUDA成功地将dll中的缓冲区与像素数据组合在一起,但是如何使用指向该缓冲区的指针在c sharp应用程序中创建位图?

1 个答案:

答案 0 :(得分:0)

有一些方法可以做到这一点:

如果您的原生函数如下:

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);
    }
}

请注意,您应该允许不安全的代码(在项目设置中,“构建”选项卡)。

相关问题