主要问题:
最近在搞海康SDK调用相机,发现在linux下一直调用不起来相机,总是提示error code:29,注册失败,重新编译后又会存在找不到依赖库的问题。
1.异常
CmakeLists编译的动态库.so移动到其他位置后,提示找不到该库的依赖库解决办法,报错信息如下:
OSError: libopencv_world.so.4.5: cannot open shared object file: No such file or directory
我编译了一个带opencv的库,还包括其他的库,在编译好的路径下运行,正常,移动到其他位置部署时,提示该问题
2.解决办法
根据百度提示:
因此,只需要做一步:
将编译后用到的三方库重新设置到环境变量中:
文心一言说的:
设置正确的LD_LIBRARY_PATH:在运行应用程序时,确保将动态库所在的目录添加到LD_LIBRARY_PATH环境变量中。这样,运行时系统就可以找到并加载所需的依赖库:
export LD_LIBRARY_PATH=/path/to/libs:$LD_LIBRARY_PATH
例如,我编译完动态库后,make install了所有我需要的依赖库到alg_lib文件夹中,因此,我需要执行:
export LD_LIBRARY_PATH=/code//alglib/alg_lib/:$LD_LIBRARY_PATH
完事之后就可以正常跑了。
还有一个问题就是关机重启后这个临时变量就失效了,因此我们可以在 ~/.bashrc 或者 ~/.bash_profile 中加入 export 语句,前者在每次登陆和每次打开 shell 都读取一次,后者只在登陆时读取一次:
vim ~/.bashrc
export LD_LIBRARY_PATH=/code//alglib/alg_lib/:$LD_LIBRARY_PATH
我的习惯是加到 ~/.bashrc 中,在该文件的未尾,可采用如下语句来使设置生效:
3.其他事项
海康SDK如果出现error code 29 注册失败,查看SDK错误编码规范,要么是环境,要么是账号密码不对,环境问题最多。