谁能找到等效的 C# 代码

发布于 2024-08-08 20:49:04 字数 550 浏览 4 评论 0原文

这是我们在 VC++ 中实现的 C++ 代码 CreateImageSnapshot, (int, eImageFormat, BYTE**) BYTE**

PlayerLib::CreateImageSnapshot (iPlayerRef,static_cast<eImageFormat>(lFormat),
        &pBuffer);

这里我需要导入 dll 并在 c# 中执行相同的过程。任何人都可以找到类似的等效 C# 代码,

[DllImport("PlayerLib", SetLastError = false, 
                   EntryPoint = "CreateImageSnapshot")]
public static extern int CreateImageSnapshot(...);

这里我需要 extern CreateImageSnapshot 函数,我想知道如何传递争论

提前致谢

This is c++ code CreateImageSnapshot, (int, eImageFormat, BYTE**) in VC++ we implementing
BYTE**

PlayerLib::CreateImageSnapshot (iPlayerRef,static_cast<eImageFormat>(lFormat),
        &pBuffer);

here i need to import the dll and do the same process in c#.. Can anyone find equivalent C# code like

[DllImport("PlayerLib", SetLastError = false, 
                   EntryPoint = "CreateImageSnapshot")]
public static extern int CreateImageSnapshot(...);

Here I need to extern the CreateImageSnapshot function and I want to know how to pass the argument

thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暗恋未遂 2024-08-15 20:49:04

正如我在上一个问题中所建议的,定义将是:


[DllImport("PlayerLib", SetLastError = false, EntryPoint = "CreateImageSnapshot")]
public static extern int CreateImageSnapshot(int player, eImageFormat imgFormat,
                                             ref IntPtr imgBuffer);


byte[] img;
IntPtr imgBuff = new IntPtr();

int res = CreateImageSnapshot(1, eImageFormat.jpeg, ref imgBuff);
int size = ????
if (res > 0)
{
  img = new byte[size];
  Marshal.Copy(imgBuff, img, 0, size);
}

但是您的非托管函数不会返回缓冲区的大小。您需要向 func 添加一个参数或在 res 中返回数组长度。

As I suggested in you previous question the definition will be:


[DllImport("PlayerLib", SetLastError = false, EntryPoint = "CreateImageSnapshot")]
public static extern int CreateImageSnapshot(int player, eImageFormat imgFormat,
                                             ref IntPtr imgBuffer);


byte[] img;
IntPtr imgBuff = new IntPtr();

int res = CreateImageSnapshot(1, eImageFormat.jpeg, ref imgBuff);
int size = ????
if (res > 0)
{
  img = new byte[size];
  Marshal.Copy(imgBuff, img, 0, size);
}

but you unmanaged function does not returns the size of buffer. you need to add one more parameter to your func or return array lenth in res.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文