当前位置: 代码迷 >> J2EE >> java jna 调用linux中so库有兴趣的进入瞅瞅
  详细解决方案

java jna 调用linux中so库有兴趣的进入瞅瞅

热度:513   发布时间:2016-04-17 23:43:07.0
java jna 调用linux中so库有兴趣的进来瞅瞅

public class StartNVR {
      public interface diaoyong extends Library{
//  diaoyong INSTANCE =(diaoyong)Native.loadLibrary("C:\\Windows\\System32\\NVRCModule",diaoyong.class);//加载window中的dll文件
//       diaoyong INSTANCE =(diaoyong)Native.loadLibrary("/cstor/Lib/NVRCModule",diaoyong.class);//加载linux中的.so库
       diaoyong INSTANCE =(diaoyong)Native.loadLibrary("NVRCModule",diaoyong.class);
//       diaoyong INSTANCE =(diaoyong)Native.loadLibrary("libNVRCModule.so",diaoyong.class);
 public int NVRC_RestartNVR(int lUserID);//重新启动
 public int NVRC_Startup(int nLocalPort, String c);//启动
//  public static class strdev extends Structure(){
//  
//  }
 public int NVRC_Login(String sIP, int nPort, String sUser, String sPass, 
 IntByReference IUserID,  Structure structdev);//用户登录
 public int NVRC_Logout(int IUserID);//用户登出
// public int NVRC_RestartNVR(String string);
 
}


在window系统中 用上面的方法调用.dll文件中的接口可以调得到 但是在linux中调用so库是调用不到 来个高手帮忙解决一下  
------解决方案--------------------
loadLibrary方法是不需要写后缀的,只需要库名,是跨平台的方法...
load方法可以输入完整路径。
------解决方案--------------------
loadLibrary调不到就说明这个库找不到,这时候你可以load输入完整路径调这个库,如果能调到,说明你在启动程序时没有将库所在路径配置到Java的读取路径中。
------解决方案--------------------
在linux的启动脚本中 加上export LD_LIBRARY_PATH=/usr/local/sdk
后面路径是你存放so文件的路径
  相关解决方案