1

管理された void を C++ void に渡すときに問題が発生しました。適切に行う方法を知っていますか?パラメータとして void(__cdecl* disph)() を取得する私のC++コードは次のとおりです

extern "C" __declspec(dllexport) void Display(void(__cdecl* disph)());

そして私の質問は、単純な void() (たとえば public static void Display()) をその c++ void に渡す方法です。

4

1 に答える 1

2

関数ポインタを渡すことについて話しているのですね。voids は渡されません。エラー、無効であるため、渡されるものは何もありません。

私の理解が正しければ、パラメーターをとらず、何も返さない関数へのポインターを渡す必要がありますね。現時点では Windows マシンを使用していないため、これはテストされていませんが、次のような方法で動作するはずです。

public delegate void VoidFnDelegate();
public value struct MyDLL
{
    [DllImport("MyDll.dll")]
    static public void Display(VoidFnDelegate fn);
}
...

void SomeFn() { ... }

MyDll.Display(new VoidFnDelegate(SomeFn));
于 2012-09-25T18:01:13.893 に答える