EasyCVR使用c/c++的头文件和dll文件导致被多重定义该如何处理?
EasyCVR的AI智能分析版本在做研发的时候,就受到了很多朋友的关注,EasyCVR的人脸识别功能采用了Go语言,使用c/c++的头文件和dll文件,点击编译运行时,出现以下错误,导致程序编译不过。
running gcc failed: exit status 1
Multiple definition of `xxxxxx`; first defined here;
Error: ld returned 1 exit status
错误的信息是多重定义导致的程序编译不通过。因此我们需要通过全局搜索来确定是哪个地方有多重定义,通过查找后发现有二处使用了相同的c的头文件和c的dll文件。
第一处是:source_hksdk_windows.go文件:
第二处是ridership.go文件:
所以需要解决此问题需要把多重定义给去除,但是把其中一处定义删除,此go程序没有引用C的头文件和库文件,也会导致程序有各种问题。于是我们从网上搜索资料,了解到另外一个解决多重定义的方法。
所以对于cgo的连接错误“Multiple definition of xxxxxx”的问题,应该在#cgo链接加上Go的源代码指令:
#cgo windows LDFLAGS: -WL,–allow-multiple-definition
这样再次编译cgo就编译通过了。
TSINGSEE青犀视频团队在流媒体行业丰富的开发经验,使得EasyCVR的整个开发过程非常流畅,并且平台功能仍在持续拓展中。与其他视频平台不同的是,EasyCVR能够支持视频分析数据与多源数据融合,可通过智能分析算法挖掘价值数据,这也是EasyCVR的一个重要特点。
如果大家对EasyCVR平台感兴趣,欢迎下载部署,实际测试,测试期间可自由调用二次开发接口,欢迎了解。