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

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

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

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

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

gcc -Wl,--add-stdcall-alias 

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