rk3588平台人脸识别sdk封装(.so动态链接库):Golang调用 笔记
上周的预研中,测试了离线 sdk
中官方的 demo
代码编译、运行测试,均已达到预期测试效果。
但官方 demo
源码只是简单样例,实际业务应用时需要对它做更多逻辑操作,并且业务逻辑层很可能不是 C
或 C++
语言,例如我一般使用 golang
语言作为业务层的开发语言。那么,基于这个现实场景,需要对原生sdk的源码采用 C
语言进行二次暴露封装,然后将它编译成动态链接库(例如 .so
),使其他编程语言能方便调用。
二次暴露封装
采用 C
语言对 官方 sdk
的 C++
源码进行二次封装暴露,为啥要做这一步?
- 首先
C
语言作为更通用的系统语言,它封装的接口在与其他高级语言嵌入时更具兼容性; - 其次
C++
内置的类概念,在Go
依赖的cgo
方式调用动态链接库方式中 并不支持。 因此,为方便Go
语言集成,必须对它用C
语言作二次封装暴露。
二次封装例子:
新建 C
源码文件 face_api.cpp
:
……