а обязательно городить лясипеды на шарпе? нельзя сразу написать на C++? почему вы ничего не рассказали о том, что используется JNI, а только вскольз упомянули о jni.h? и наконец: пост выглядит как «пошаговое руководство». на хабре вам необходимо хоть немного рассказать о использующейся технологии (JNI).
Добавил пару ссылок об этой технологии.
А решение было получено из поставленной задачи: имелся некоторый функционал, реализованный на C#, основной проект велся на Java и очень не хотелось готовые шарповские библиотеки заного переписывать.
Ну в любом случае в качестве получения личного опыта было интересно найти решение.
1) "__gc" — это старый синтаксис, его уже давно не рекомендуется использовать.
2) Есть такой проект SWIG, сильно помогает, когда есть связи C#, Java, python ...-> C++
C# to Java (вызов C# dll из Java)