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 :
……