2

登録した .Net dll があり、C# コードからメソッドを呼び出すことができます。私は基本的にこのチュートリアルに従いました: http://support.microsoft.com/kb/828736

今度は、C# で非同期に何かを行う必要があるため、C++ コードに完了したことを伝える何らかの方法が必要です。

次のようなメソッドを作成しました。

public void Init(string server, IntPtr callback); 

私はC ++で次のように見ることができます:

Init(BSTR server, long callback);

また、変数を呼び出すときに、変数を C++ コードに戻す必要があります。

基本的に、C# コードで発生するイベントがあり、イベント引数を含め、それを処理するには C++ コードが必要です。

自分で読んでよかったのですが、何も見つかりませんでした。Windowsイベントについていくつか見ました...ここ http://msdn.microsoft.com/en-us/library/windows/desktop/aa385771(v=vs.85).aspx

しかし、私は考えていないWindowsヘッダーを使用していません。これを行う簡単な方法があれば、これらすべてを追加したくありませんでした。

読んでくれてありがとう!

4

1 に答える 1

3

思ったより簡単ですが、ブードゥー教のようです...

基本的にC ++で追加

void CALLBACK CppCallbackc()
{
    std::cout << "test";
}

次に、C#で追加します

public delegate void CppCallback();

そして、あなたがそれを発射したいとき、

Marshal.GetDelegateForFunctionPointer(cppCallback, typeof(CppCallback)).DynamicInvoke(null);
于 2013-01-14T21:02:31.500 に答える