繁体   English   中英

C#互操作与非托管DLL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM