Почему в либе собранной g++ jna не находит функцию?
Это потому что когда вы вызываете g++ используются другие дефолтовые настройки, по умолчанию ваш код считается кодом на C++ (даже файлы с расширением.c, см. https://stackoverflow.com/questions/172587/what-is... ) и, соответственно, начинает работать name mangling. Варианты действий:
- использовать extern "C" для registerCallback;
- компилировать код как сишный код.
Объявляйте функции с extern "C".