07/10/30 15:08:48
質問です。
int sample(int (* func)(void*), void* arg);
というCの関数を呼び出したいのですが、argにマネージオブジェクトを引き渡す手段に悩んでいます。
struct Arg { gcroot<array<int>^> obj; };
と
int on_callback(void* arg) {
Arg* parg = (Arg*)arg;
Console::WriteLine(part->obj->Length);
}
を用意して
Arg arg;
arg.obj = gcnew array<int>(4);
sample(on_callback, &arg);
みたいな方法を考え付いて一見問題なく動いているように見えますが、何か問題があったりもっと一般的な方法があったりするんでしょうか。
ていうかon_callbackはなぜ#pragma unmanagedじゃなくても動くんだろう?