g ++:如何解码导出的符号

时间:2010-01-02 20:27:49

标签: java g++ java-native-interface name-mangling

我正在尝试编译使用JNI的Java库。当我启动程序时,我看到一个带有UnsatisfiedLinkError的崩溃,它表示在DLL中找不到特定的方法。

仔细观察后,我发现用于编译和链接的g ++通过在方法名称中添加诸如“@ 8”或“@ 16”的后缀来破坏我的方法名称。有没有人知道正确的编译器选项来禁用名称修改?提前谢谢!

编辑:我正在通过Eclipse + CDT插件使用MinGW。

1 个答案:

答案 0 :(得分:12)

对于使用GCC编译的Windows DLL的JNI调用,您需要在链接阶段向GCC添加add-stdcall-alias参数:

gcc -Wl,--add-stdcall-alias

这将为DLL添加正确的函数名称,从而通过JNI启用调用。