我正在尝试编译一个使用 JNI 的 Java 库。当我启动程序时,我看到崩溃并出现 UnsatisfiedLinkError,它表示在 DLL 中找不到特定方法。
经过仔细检查,我发现我用于编译和链接的 g++ 通过在方法名称中添加“@8”或“@16”等后缀来破坏我的方法名称。有人知道禁用名称修改的正确编译器选项吗?提前致谢!
EDIT:我通过 Eclipse + CDT 插件使用 MinGW。
为了使 JNI 调用能够与使用 GCC 编译的 Windows DLL 一起使用,您需要在链接阶段向 GCC 添加 add-stdcall-alias 参数:
gcc -Wl,--add-stdcall-alias
这会将正确的函数名称添加到 DLL 中,从而启用通过 JNI 的调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)