アンマネージC++コードでC#関数をコールバックとして呼び出す必要があります。アンマネージコードをラップするCLI/C++クラスがあります。このCLI/C ++クラスのインスタンスは、C#内に存在します。
C#コードは以下のテキストのようになります。callBackメソッドへの(デリゲート)関数ポインターがあります。CLI_classのCLIインスタンスがあります。addValueChangedCallBack関数で何らかの形で関数ポインターを指定したいと思います。
public Setup(){
tempFUNC myFuncObj = new tempFUNC(callBack)
CLI_class c=new CLI_class();
c.addValueChangedCallBack(myFuncObj)
}
public delegate void tempFUNC(float x);
void callBack(float x){
....
}
次に、CLIコードで次のようなことを行います。
void addValueChangedCallback(void (*ManipCallBack)(float)){
unmanagedCPPCLASS.addValueChangedCallback(ManipCallBack)
}
関数ポインタをC++ポインタ(*)に変換するにはどうすればよいですか?また、C#クラスはすでにC ++ / CLIプロジェクトを参照して使用しているため、C ++ / CLIプロジェクトでC#プロジェクトを参照することはできません。依存関係の問題はありますか?
いくつかのサイトで「データのマーシャリング」または「相互運用」の使用への参照を見てきました。それらがどのように機能するのか、または私が見たものから正確に何をするのかわかりませんが、これらは私が使用すべきものですか?