MALOUDA-PSA 2024-03-10 18:53 采纳率: 91%
浏览 6
已结题

Macosx中关于dylib和so动态库的问题

在macos上做jni开发的时候发现用dylib来做动态库运行没问题,可是如果编译成so库,就会提示unsatisfiedlinkerror:com.example.add(II)I at... ...错误

  • 写回答

2条回答 默认 最新

  • Kwan的解忧杂货铺 Java领域优质创作者 2024-03-10 18:53
    关注

    MALOUDA-PSA 晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    对于动态库问题,macOS使用的是dylib文件格式,而不是Linux常见的so文件格式。因此,在macOS上使用so库会产生链接错误。

    要解决这个问题,可以尝试以下几个方案:

    1. 将JNI库编译成dylib而不是so库:这是最简单的解决方法,将JNI库编译成dylib格式即可。在编译时,使用"-dynamiclib"参数而不是"-shared"参数。

    2. 修改JNI代码中的链接库名称:如果你的JNI代码中指定了链接库的名称,例如在System.loadLibrary("myLib")中指定了myLib,则需要根据dylib的文件名进行修改。因此,在调用System.loadLibrary时,使用正确的dylib文件名。

    3. 使用动态加载库的方式:如果你希望将JNI库编译成so格式并在macOS上使用,你可以尝试使用动态加载库的方式。在Java代码中,可以使用System.load("path/to/your/library.so")来加载so库。注意,这种方式需要指定完整的so库路径。

    综上所述,为了在macOS上解决JNI动态库问题,你可以考虑将JNI库编译成dylib格式,或者修改JNI代码中的链接库名称,并确保使用正确的文件名。如果你仍然想使用so库,可以尝试使用动态加载库的方式加载库文件。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 创建了问题 3月10日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备