在macos上做jni开发的时候发现用dylib来做动态库运行没问题,可是如果编译成so库,就会提示unsatisfiedlinkerror:com.example.add(II)I at... ...错误
2条回答 默认 最新
关注 MALOUDA-PSA 晚上好🌙🌙🌙
本答案参考ChatGPT-3.5对于动态库问题,macOS使用的是dylib文件格式,而不是Linux常见的so文件格式。因此,在macOS上使用so库会产生链接错误。
要解决这个问题,可以尝试以下几个方案:
-
将JNI库编译成dylib而不是so库:这是最简单的解决方法,将JNI库编译成dylib格式即可。在编译时,使用"
-dynamiclib
"参数而不是"-shared
"参数。 -
修改JNI代码中的链接库名称:如果你的JNI代码中指定了链接库的名称,例如在
System.loadLibrary("myLib")
中指定了myLib
,则需要根据dylib的文件名进行修改。因此,在调用System.loadLibrary
时,使用正确的dylib文件名。 -
使用动态加载库的方式:如果你希望将JNI库编译成so格式并在macOS上使用,你可以尝试使用动态加载库的方式。在Java代码中,可以使用
System.load("path/to/your/library.so")
来加载so库。注意,这种方式需要指定完整的so库路径。
综上所述,为了在macOS上解决JNI动态库问题,你可以考虑将JNI库编译成dylib格式,或者修改JNI代码中的链接库名称,并确保使用正确的文件名。如果你仍然想使用so库,可以尝试使用动态加载库的方式加载库文件。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报-
悬赏问题
- ¥50 三种调度算法报错 有实例
- ¥15 关于#python#的问题,请各位专家解答!
- ¥200 询问:python实现大地主题正反算的程序设计,有偿
- ¥15 smptlib使用465端口发送邮件失败
- ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
- ¥15 对于squad数据集的基于bert模型的微调
- ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
- ¥20 steam下载游戏占用内存
- ¥15 CST保存项目时失败
- ¥20 java在应用程序里获取不到扬声器设备