から設定します。アンマネージC DLLのC#バインディングを作成しています。アンマネージC DLLのパブリックフィールドをC#
はDLLは、いくつかのデータを返すために5つのフックが用意されています
typedef void (*t_libpd_printhook)(const char *recv);
などのフィールドをエクスポート:ちょうど私を与えた私はバインディングコードを生成するInterop Assistantを使用していた今
EXTERN t_libpd_printhook libpd_printhook;
、デリゲートの定義:
public delegate void t_libpd_printhook([In] [MarshalAs(UnmanagedType.LPStr)] string recv);
魔法のInterop関数呼び出しがあります私は、DLLのt_libpd_printhookフィールドを設定するために使用できますか?
ああ、それは分かりませんでしたが、私はそれに代理人をどのように割り当てますか? – thalm
うん、私はあなたの答えを今すぐ受け入れました。私の質問に対する正解です。しかし、私が使用しているDLLはオープンソースなので、私はおそらくusrとして提案されているセッターメソッドを追加します。私はこれが参考になることがわかった:http://stackoverflow.com/questions/2167895/howto-implement-callback-interface-from-unmanaged-dll-to-net-app – thalm
興味深い質問と私はセッターがネイティブコードをコンパイルしている場合は適切なソリューションです。 –