开发者

g++: How to unmangle exported symbols

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜