【问题标题】:How to Marshal a void* function return type and parameter in C#?如何在 C# 中编组 void* 函数返回类型和参数?
【发布时间】:2011-10-08 10:23:46
【问题描述】:

我有一个带有原型的 C 函数, void* VoidPointer(void*); 现在我需要在 C# 中编组它(使用 DllImport)。但我不知道如何在 C# 代码中提及参数。

  • 静态公共外部WHAT_RETURN_TYPE VoidPointer(WHAT_PARAMETER_TYPE);
  • 如何在 C# 代码中使用正确的参数进行调用(示例使用)

我是 C# 新手,需要尽快解决这个问题(在几次尝试中都遇到了这样的错误,无法从 'int' 转换为 'System.IntPtr') 谢谢。

【问题讨论】:

  • 我认为 c# 支持 voidpointers(只使用 void*)
  • IntPtrvoid* 的托管版本
  • 这是一个绝对没有希望的函数签名。如果您对参数和返回值应该代表什么一无所知,那么 IntPtr 是唯一的选择。你将不得不处理后果。其中之一是尝试没有什么意义。

标签: c# void-pointers


【解决方案1】:

c# 支持 void 指针。只需将函数声明为

[DllImport("test.dll")]
public static extern unsafe void* VoidPointer(void* AValue);

public unsafe void Test()
{
    int* a;
    int b = 0;

    a = (int*)VoidPointer(&b);
}

(这只有在 void 指针当然是引用整数时才有效)

【讨论】:

    猜你喜欢
    • 2017-07-13
    • 2019-10-08
    • 2015-03-24
    • 1970-01-01
    • 2016-06-29
    • 2021-12-19
    • 1970-01-01
    • 2021-10-02
    • 2017-02-08
    相关资源
    最近更新 更多