linux 有dll文件吗,linux上可以运行dll吗

好像win下只能调用dll,既然你是用c/c++开发的库,那就应该尽可能的使用跨平台的api,win下发布为dll,linux下发布为so。就像汽车靠轮子走,轮船靠螺旋桨走是一个道理,虽然都是发动机带动。so是linux下编译的库文件而dll是win平台的

是不是win上面安装了EcgAnalysis,linux上面没有安装EcgAnalysis类?

你可以去看一些跨平台的解决方案,例如Eclipse中的插件,需要调用dll/so,它会同时内置两种文件dll/so,然后程序运行的时候,通过获取os.name去判断是windows还是linux,然后通过System.loadLibrary方法去加载对应的版本。

不是说so中没有调用linux的平台windows下就可以调用。dll和so分别是windows和linux下定义的代码库的标准,文件的格式是windows和linux自己定义的,肯定是不兼容的,因此无法实现一个版本多个平台通吃的。

所以,还是按照检测系统、加载不通的库的方式来吧回复@hhl3136:请把第一个参数改为so文件的绝对路径试试回复@依然菜刀:Clibraryinstance=(Clibrary)Native.loadLibrary("EcgAnalysis",Clibrary.class);回复@hhl3136:把加载so部分的代码贴出来!要崩溃了,菜鸟请教大神,我现在只有一个so文件,在linux中把so文件copy到/usr/lib中,但是使用jna还是不能调用,报错:connotopensharedobjectfile,nosuchfileordirectoryso是linux下动态库,Windows下如果做android开发可以写代码调so

根据你的表述,应该是环境变量的问题,可能你的linux没有将/usr/lib加入到环境变量中,因此请不要使用System.loadLibrary+库名称的方式加载,考虑改为System.load(文件绝对路径)的方式加载!回复@依然菜刀:老哥,看下我用几种平台下的so文件,使用绝对路径调用报的错回复@hhl3136:看我的多条回复,说的已经很清楚了回复@依然菜刀:原谅我的无知,so文件不都是在linux上生成的吗?安卓可以直接调用这个so吗?回复@hhl3136:Linux的so库一般要在X86平台下编译,Android手机都采用ARM平台,两个平台的指令集都不一样回复@hhl3136:原来在Android上的需要拿源代码到Linux环境下重新编译才能使用

X86=======Exceptioninthread"main"java.lang.UnsatisfiedLinkError:/usr/lib/libEcgAnalysis.so:/usr/lib/libEcgAnalysis.so:wrongELFclass:ELFCLASS32(Possiblecause:architecturewordwidthmismatch)x86_64Exceptioninthread"main"java.lang.UnsatisfiedLinkError:/usr/lib/libEcgAnalysis.so:liblog.so:cannotopensharedobjectfile:Nosuchfileordirectoryarm64Exceptioninthread"main"java.lang.UnsatisfiedLinkError:/usr/lib/libEcgAnalysis.so:/usr/lib/libEcgAnalysis.so:cannotopensharedobjectfile:Nosuchfileordirectory(Possiblecause:can'tloadthis.so(machinecode=0xb7)onaAMD64-bitplatform)mips64Exceptioninthread"main"java.lang.UnsatisfiedLinkError:/usr/lib/libEcgAnalysis.so:/usr/lib/libEcgAnalysis.so:cannotopensharedobjectfile:Nosuchfileordirectory(Possiblecause:can'tloadMIPS-bit.soonaAMD64-bitplatform)mipsExceptioninthread"main"java.lang.UnsatisfiedLinkError:/usr/lib/libEcgAnalysis.so:/usr/lib/libEcgAnalysis.so:wrongELFclass:ELFCLASS32(Possiblecause:architecturewordwidthmismatch)

armeabi-v7aExceptioninthread"main"java.lang.UnsatisfiedLinkError:/usr/lib/libEcgAnalysis.so:/usr/lib/libEcgAnalysis.so:wrongELFclass:ELFCLASS32(Possiblecause:architecturewordwidthmismatch)arneabiExceptioninthread"main"java.lang.UnsatisfiedLinkError:/usr/lib/libEcgAnalysis.so:/usr/lib/libEcgAnalysis.so:wrongELFclass:ELFCLASS32(Possiblecause:architecturewordwidthmismatch)回复@依然菜刀:好的,非常感谢!!别想了,C++是不能夸平台的,一定要对应平台的才行,想办法拿源码,重新编译吧,当然,你也可以用虚拟机技术

  • 1
    点赞
  • 3
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值