标签:golang

0

252

rk3588平台人脸识别sdk封装(.so动态链接库):Golang调用 笔记

上周的预研中,测试了离线 sdk 中官方的 demo 代码编译、运行测试,均已达到预期测试效果。

但官方 demo 源码只是简单样例,实际业务应用时需要对它做更多逻辑操作,并且业务逻辑层很可能不是 CC++ 语言,例如我一般使用 golang 语言作为业务层的开发语言。那么,基于这个现实场景,需要对原生sdk的源码采用 C 语言进行二次暴露封装,然后将它编译成动态链接库(例如 .so ),使其他编程语言能方便调用。

二次暴露封装

采用 C 语言对 官方 sdkC++ 源码进行二次封装暴露,为啥要做这一步?

  • 首先 C 语言作为更通用的系统语言,它封装的接口在与其他高级语言嵌入时更具兼容性;
  • 其次 C++ 内置的类概念,在 Go 依赖的 cgo 方式调用动态链接库方式中 并不支持。 因此,为方便 Go 语言集成,必须对它用 C 语言作二次封装暴露。

二次封装例子:

新建 C 源码文件 face_api.cpp

……

乐果   发表于   2024 年 01 月 12 日 标签:cc++golangcgoai 继续阅读

0

3086

go交叉编译arm程序

编译Go编译器(Host) 因为从Go1.4之后Go语言的编译器完全由Go语言编写,所以为了从源代码编译Go需要先编译一个1.4版本的Go版本。

下载完成之后将得到一个go1.4压缩包,接下来进行解压编译:

tar -zxvf go1.4-bootstrap-20171003.tar.gz -C /usr/local/
cd /usr/local/go/src
GOOS=linux GOARCH=amd64 ./make.bash

经过短时间的编译之后将会在go/bin目录下生成go命令二进制文件

设置环境变量 在/etc/bash.bashrc文件中添加如下内容(重启命令行后生效)):

export GOROOT_BOOTSTRAP=/usr/local/go
export CC_FOR_TARGET=/opt/zhaozhongxiang/hwzt_yc_3.10.53/build-x11/tmp/sysroots/x86_64-linux/usr/bin/cortexa9hf-vfp-neon-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc    
export CXX_FOR_TARGET=/opt/zhaozhongxiang/hwzt_yc_3.10.53/build-x11/tmp/sysroots/x86_64-linux/usr/bin/cortexa9hf-vfp-neon-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++

编译Go(ARM) 完成Go1.4的编译之后,可以利用Go1.4来编译新版本的Go。

……

乐果   发表于   2019 年 02 月 20 日 标签:golang 继续阅读

0

4710

golang对map未带锁的读写,并发情况下导致致命错误

对于智能硬件云端服务,用golang来写服务端非常适合。

公司因系统对接智能灯控,本人写了一个服务,经过几个月的生产环境验证已稳定运行了很久, 但上周末,服务突然挂了。查看日志,锁定一段致命错误提示:concurrent map iteration and map write

如下截图:

……

乐果   发表于   2017 年 08 月 28 日 标签:golang 继续阅读

0

4265

mac配置VSCode开发Golang过程中的坑

安装Visual Studio Code在此不详细说明了,网上资料一堆,在此简单说明下安装过程的坑:

先后安装好Visual Studio Code、golang扩展插件、以及扩展插件所依赖的包后,调试发现报错,主要原因是 dlv这个依赖包安装出了问题,我们一般是用go get 来安装的:

go get -u -v github.com/derekparker/delve/cmd/dlv

这在windows系统下是没问题的,但在mac下不行,网上说是因为签名权限等,因此最好用brew命令来安装,例如:

brew install go-delve/delve/delve

但安装失败:

……

乐果   发表于   2017 年 08 月 23 日 标签:golangmac 继续阅读

0

2555

优秀的golang开源项目

学习golang三年多了,golang社区不断涌现出优秀的项目,在此收集下。

docker

无人不知的虚拟华平台,开源的应用容器引擎,借助该引擎,开发者可以打包他们的应用,移植到任何平台上。

https://github.com/docker/docker
38154 stars
11393 forks

gogs

一款基于git的代码托管系统,类似于github和gitlab,不过其小巧易用,功能强大,部署方便,也有不少用户在使用。

https://github.com/gogits/gogs
17004 stars
1887 forks

syncthing

开源的文件同步系统,它使用了其独有的对等自由块交换协议,速度很快,据说可以替换BitTorrent Sync。

https://github.com/syncthing/syncthing
14399 stars
1117 forks

……

乐果   发表于   2017 年 03 月 16 日 标签:golang 继续阅读

较旧的文章
热评文章