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平台感兴趣,欢迎下载部署,实际测试,测试期间可自由调用二次开发接口,欢迎了解。

 

posted on 2021-08-24 17:28  EasyCVR视频融合平台  阅读(119)  评论(0)    收藏  举报