私は、関数ポインタと任意のユーザデータ(void*
)を必要とするC functionの周りにラッパーを書こうとしています。関数ポインタ私はデリゲートを使用して対処する方法を考え出しましたが、object
をvoid*
に変換する方法を理解することはできません。オブジェクトをvoid *に変換して戻しますか?
それは私の知る限り、ポインタのように振る舞うので、私は、代わりにそれをref object
を作ることができますが、私は
無効なVARIANTはに管理されていないVARIANTから変換中に検出されたような例外を得ることをしようとすると、管理対象オブジェクト。無効なVARIANTをCLRに渡すと、予期しない例外、破損またはデータの損失が発生する可能性があります。
This "solution"は私のために働くかもしれないが、私はそれは後で戻って渡すことができるように、C DLLに任意のデータを渡す方法がなければならない考え出しましたか?
IntPtrはどうですか? –
個人的には、 'fixed'ブロックを介して' struct'へのポインタを使う方が良いと思います... –
@NoIdeaForName:C DLLは 'IntPtr'でも問題はありませんが、どうすればいいですか?それが返ってきたら 'object'に戻します(また、オブジェクトをIntPtrにどのように 'キャスト'するのでしょうか)? – mpen