13,007
回編集
564行目: | 564行目: | ||
==== サンプルコード 3 ==== | ==== サンプルコード 3 ==== | ||
このセクションでは、C++ | このセクションでは、C# EXEからC++ DLLへコールバック関数を渡す方法を記載する。<br> | ||
<br> | <br> | ||
まず、以下にC++ DLLを記述する。<br> | まず、以下にC++ DLLを記述する。<br> | ||
616行目: | 616行目: | ||
<br> | <br> | ||
マネージドコールバック関数を定義する。<br> | マネージドコールバック関数を定義する。<br> | ||
以下の例では、ManagedCallBackというデリゲートを宣言している。<br> | |||
C++ DLLのSampleCallBack関数にデリゲートを引数として渡すことで、既知のコールバック形式に自動的に変換される。<br> | |||
<source lang="c#"> | <source lang="c#"> | ||
using System; | using System; | ||
624行目: | 624行目: | ||
namespace ConsoleSample01 | namespace ConsoleSample01 | ||
{ | { | ||
delegate bool ManagedCallBack(int x); | |||
class Program | class Program | ||
{ | { | ||
[DllImport("SampleDLL.dll")] | |||
private static extern int SampleCallback(ManagedCallBack CallBack, int lPalam); | |||
static void Main(string[] args) | |||
{ | |||
var CallBack = new ManagedCallBack(CallBackFunction); | |||
var iRet = SampleCallback(CallBack, 0); | |||
Console.WriteLine($"{iRet}"); | |||
Console.ReadKey(); | |||
} | |||
public static bool CallBackFunction(int x) | |||
{ | |||
Console.WriteLine($"{x}"); | |||
return true; | |||
} | |||
} | } | ||
} | } |