I'm trying to compile a Java library that uses JNI. When I start the program, I see a crash with an Unsatisfie开发者_如何转开发dLinkError, 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.
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.
精彩评论