JNI + C++ /CLI

JNIのDLLをMixedでコンパイルしたら、Javaからマネージドコードを呼ぶのが簡単になるのではないか?という考えからちょっとテスト(VC2005Express Java5u7)。
1. 普通のJNIのコードをMixedでコンパイル。ワーニングが発生するが一応動くようだ。
2. Console::WirteLineをJNIから呼び出してみる。→動作した。
3. Javaから渡されたStringオブジェクトをConsole::WriteLineに渡そうとしたが、GetStringUTFCharsで取得したオブジェクトをMarshal::PtrToStringUni((IntPtr)(wchar_t)tmp);での変換ではうまくいかない。バイト列を取得してバイト列からStringオブジェクトを生成したほうがうまくいくかもしれない。
4. 簡単なC#で作成したDLLをJNIからgcnewで生成しメソッドを呼び出してみる。→JavaVMごと落ちる。hs_errファイルを見るとC#のDLLがロードされていないことがわかる。ArrayListをgcnewで生成した場合はうまくいくので、何か設定の問題かC#,C++側の実装の仕方に問題があるかもしれない。