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库是调用不到 来个高手帮忙解决一下 |
|
5分 |
loadLibrary方法是不需要写后缀的,只需要库名,是跨平台的方法…
load方法可以输入完整路径。 |
diaoyong INSTANCE =(diaoyong)Native.loadLibrary(“NVRCModule”,diaoyong.class); 没有写后缀啊 NVRCModule 单只的就是库的名字 在linux中 libNVRCModule.so 我这样子的调用应该没有什么错误啊 楼上的也不知道是哥哥姐姐
|
|
5分 |
loadLibrary调不到就说明这个库找不到,这时候你可以load输入完整路径调这个库,如果能调到,说明你在启动程序时没有将库所在路径配置到Java的读取路径中。
|
如何把库的路径配置到java的读取路径中啊
|
|
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
|
|
参看你启动时所使用的命令参数帮助信息
|
|
嘻嘻 linux 不会是一会我让同事弄一下 谢谢啊
|
|
有System.load(); 但是没有Native.load()啊 只有Native.loadlibrary();这可咱办啊
|
|
自己顶一下 再来个人啊 亲们
|
|
30分 |
在linux的启动脚本中 加上export LD_LIBRARY_PATH=/usr/local/sdk
后面路径是你存放so文件的路径 |
我现在遇到一个问题 我不想在启动脚本中配置
希望在程序中进行配置用了 NativeLibrary.addSearchPath(libName,searchpath); 但涉及依赖的so文件就有问题了 |
|
问题解决了么?我现在也有这个问题,不知道该把.so放在什么地方,总是提示文件不存在
|