【发布时间】:2014-07-16 08:17:51
【问题描述】:
我有一些非托管 C++ 动态库和 C# GUI 应用程序,正在使用它。我想通过一些库提供的方法中的参数传递回调。是否可以从 C# 将回调传递给非托管 C++ 方法。
// unmanaged C++
typedef uint8_t (__stdcall *SomeCallback)();
MYDLL_API uint8_t someMethod(SomeCallback cb);
我正在尝试以这种方式使用库:
// C# part
public delegate Byte SomeDelegate();
[DllImport("mylibraryname.dll")]
public static extern Byte someMethod(ref SomeDelegate pDelegate);
// actuak callback
Byte myCallback() {
// some code
}
...
// call unmanaged passing callback
static void Main(string[] args) {
someMethod(myCallback);
}
我收到编译错误:
cannot convert from 'method group' to 'ref SomeDelegate
我的方法完全错了吗?
【问题讨论】:
-
为什么回调 ref 在你的 extern 方法中?
标签: c# c++ marshalling