GO语言在TSINGSEE青犀视频研发中起到了至关重要的作用,比如在开发 EasyCVR 的部分功能过程中,需要使用调用 C/C++ 的代码,一般采用 Cgo 的方式。当运行生成的可执行程序时,出现以下错误:
could not launch process: Process XXX has exited with status XXXX
原因分析
我们可以按照以下步骤对该错误进行排查:
1、首先查看代码逻辑,确认代码逻辑并无错误之后进行下一步。
2、查看对应的编译是否正确,编译顺利通过的话,则检查加载库,一切正常,进入下一步。
3、查看代码,发现加载的库文件是动态库,dll 库。
注:静态库和动态库的区别是:静态库在程序的链接阶段被复制到了程序中;动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用。
即程序运行的时候,首先从系统的环境变量和程序当前目录查找需要的 dll 库,如果失败,在 Go 程序中就会出现这种错误。
解决方案
将对应的动态库复制到可执行文件所在的目录,或者复制到系统环境变量中。可正常运行。
EasyCVR视频平台
EasyCVR安防视频云服务的主要功能是将本地局域网内连通的RTSP视频源,包括但不限于数字网络摄像机、DVR、NVR、编码器等设备视频流,通过RTMP协议推送到阿里、腾讯等公有云厂商的视频服务中,具备优秀的视频转码、播放、级联能力。同时该新系统也支持海康SDK、Ehome协议,GB28181国标协议,是一套真正的视频融合平台。
EasyCVR已经支持集成海康EHome协议,感兴趣的用户可以阅读一下《EasyCVR集成海康EHome协议系列——配置及协议介绍》、《EasyCVR集成海康EHome协议系列——Ehome协议调用流程介绍》等文。