Question

I'm trying to compile a Java library that uses JNI. When I start the program, I see a crash with an UnsatisfiedLinkError, which says that a particular method could not be found in the DLL.

On closer inspection, I found out that g++, which I use for compilation and linking, mangled my method names by adding suffixes such as "@8" or "@16" to the method names. Does anybody know the correct compiler options to disable the name mangling? Thanks in advance!

EDIT: I'm using MinGW through Eclipse + CDT plugin.

Was it helpful?

Solution

For JNI calls to work with Windows DLLs compiled with GCC you need to add a add-stdcall-alias parameter to GCC on linking phase:

gcc -Wl,--add-stdcall-alias

Which will add correct function names to the DLL and thus enable calls via JNI.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top