Я впервые использую JNI. Мне нужно вызвать стороннюю библиотеку Visual C ++ из Java-программы, поэтому я написал оболочку для Visual C ++. Библиотека загружается нормально, но когда я пытаюсь вызвать функцию из моей библиотеки-оболочки, я получаю страшный UnsatisfiedLinkError.
Моя оболочка включает в себя файл .h, созданный javah, и содержит следующие данные в файле .cpp:
JNIEXPORT jboolean JNICALL Java_Foo_bar (...)
но библиотека показывает (в PE Explorer)
_Java_Foo_bar @ 32
и мой код Java имеет
публичный родной логический бар (...) внутри класса Foo
Я подозреваю, что @ 32 - это то, что запутывает Java, но я не могу понять, как от него избавиться. Я не очень разбираюсь в настройках компилятора / компоновщика и тому подобном - по большей части мне удавалось обходиться настройками по умолчанию или кто-то еще занимался этой частью проекта.
Заранее спасибо за любую помощь!