Cgo
  • 2024-09-24go基础-20.部署
    go项目的部署特别简单,编写完成之后,只需要执行gobuild即可打包为可执行文件注意,这个操作是不同平台不一样的windows下打包就是exe文件,linux下打包就是二进制文件打包命令gobuild打当前目录下的main包,注意,只能有一个main函数的包gobuildxxx.go打当前目录下,xxx.go的
  • 2024-08-14Mac下go安装
      https://go.dev/dl/查看是arm64,还是x86-64命令:-uname-a我的是DarwinokerdeMacBook-Pro.local23.5.0DarwinKernelVersion23.5.0:WedMay 120:13:18PDT2024;root:xnu-10063.121.3~5/RELEASE_ARM64_T6030arm64  安装后,重新打开终端  输入命令:go
  • 2024-06-04用 cgo 处理信号,go 不能处理信号
    下面是我的main.gopackagemain/*#include<stdio.h>;#include<signal.h>;#include<string.h>;#include<stdlib.h>;#include<unistd.h>;//用于存储旧操作的全局变量structsigactionold_action;//信号处理函数voidhandler(intsignum,siginf
  • 2024-05-27golang的交叉编译是什么
     Go(Golang)的交叉编译是指在一种硬件架构或操作系统环境下,使用Go编译器生成适用于另一种架构或操作系统的可执行程序。Go语言的设计使得交叉编译变得非常简单和高效,它允许开发者在开发环境中构建目标平台上的代码,而无需在目标平台上实际运行编译过程。 在Go中,交叉编译主要涉
  • 2024-05-27golang的 CGO 是什么
     CGO是Go(Golang)语言中的一个工具,全称为"C-Go"或者"CforGo"。它是Go标准库的一部分,允许Go代码与C语言代码进行交互。CGO提供了在Go程序中使用C语言库的能力,同时也允许C代码调用Go的函数。通过CGO,开发者可以利用Go语言的强类型和垃圾回收等特性,同时利用C语言的高性能和广
  • 2024-04-27Go的Gin框架中使用Cgo调用Python的CApi调用Python代码
    在Gin项目中定义Services用以唤起Python,值得注意的是需要在引入Python.h前使用#cgo声明依赖库packagecpython//#cgoCFLAGS:-I"Q:/Sill-/anaconda/envs/poetry/include"//#cgoLDFLAGS:-L"Q:/Sill-/anaconda/envs/poetry/libs"-lpython311//#include<Python.h>imp
  • 2024-01-29Golang中的交叉编译
    Golang中的交叉编译在Golang中,交叉编译指的是在同一台机器上生成针对不同操作系统或硬件架构的二进制文件。这在开发跨平台应用或构建特定平台的发布版本时非常有用。交叉编译Golang程序的基本步骤如下:指定目标操作系统和工具链并设置对应的环境变量在编译时,需要指定目标
  • 2024-01-20使用CGO要注意的问题
    密码学有很多较快的算法是基于c或c++纂修,而工程上主要以go语言为主,在此梳理一些go调用c常见问题和用例。有很多奇特的方式进行传输,但是想要性能最优还是以指针传输作为主要传输方式。一些简单的计算可以直接使用c编写成.h进行引用,但在工程部署常常拥有大量依赖库,若在服务
  • 2023-12-30Golang 不使用官方基于cgo的sqlite驱动
    参考以下的代码:packagedatabaseimport( "Forensics_Equipment_Plugin_Manager/logger" "Forensics_Equipment_Plugin_Manager/model" "github.com/glebarez/sqlite" "gorm.io/gorm")varSqliteConn*gorm.DBfuncinit(){ I
  • 2023-12-24cgo 机制
    Go语言是通过自带的一个叫CGO的工具来支持C语言函数调用,同时我们可以用Go语言导出C动态库接口给其它语言使用。基于C标准库实现最简单的CGO程序//hello.gopackagemain//#include<stdio.h>import"C"funcmain(){C.puts(C.CString("Hello,thisisaCGOdem
  • 2023-12-14go语言window|mac|linux下交叉编译其他平台的软件包
    go语言window|mac|linux下交叉编译其他平台的软件包注意:go1.17发现直接使用set是不起作用的,必须要使用goenv-w来设置一、设置编译环境,需要发布哪个平台Window下1、设置Linux编译环境SETCGO_ENABLED=0setGOARCH=amd64setGOOS=linux2、设置Mac编译环境goenv-wCGO_ENA
  • 2023-12-07cgo:go数组转c数组调用c函数
    packagemain/*#include<stdio.h>voidprocessInt2DArray(int*arr,introws,intcols){for(inti=0;i<rows;i++){for(intj=0;j<cols;j++){printf("%d",*(arr+i*cols+j));}
  • 2023-11-18go语言window|mac|linux下交叉编译其他平台的软件包
    go语言window|mac|linux下交叉编译其他平台的软件包注意:go1.17发现直接使用set是不起作用的,必须要使用goenv-w来设置一、设置编译环境,需要发布哪个平台Window下1、设置Linux编译环境SETCGO_ENABLED=0setGOARCH=amd64setGOOS=linux2、设置Mac编译环境goenv
  • 2023-09-02EasyCVR视频融合平台Linux环境下CGO调用C接口推流异常,H.265转H.264失败的原因是?
    EasyCVR视频融合云平台采用云边端一体化架构,可以将分散在仓储各处的前端监控设备(如IPC、NVR等)集中接入,并提供实时视频监控、视频录像、云存储、录像检索与回放、智能告警、云台控制、平台级联、服务器集群等视频能力服务。通过实时高清视频监控,仓储管理人员可以高效地监管人员和货
  • 2023-08-22EasyCVR视频融合平台Linux环境下CGO调用C接口推流异常,H.265转H.264失败的原因是?
    EasyCVR视频融合云平台采用云边端一体化架构,可以将分散在仓储各处的前端监控设备(如IPC、NVR等)集中接入,并提供实时视频监控、视频录像、云存储、录像检索与回放、智能告警、云台控制、平台级联、服务器集群等视频能力服务。通过实时高清视频监控,仓储管理人员可以高效地监管人员和货
  • 2023-07-19CGO输出helloworld
    使用CGO输出helloworld本人windows版本goversiongo1.18.3windows/amd64dir目录:D:\cgo\mainModeLastWriteTimeLengthName---------------------------d-----2023/7/1921:59
  • 2023-06-23GoLang在不同系统打包
    配置Mac下编译Linux,Windows平台的64位可执行程序:goenv-wCGO_ENABLED=0GOOS=linuxGOARCH=amd64goenv-wCGO_ENABLED=0GOOS=windowsGOARCH=amd64Linux下编译Mac,Windows平台的64位可执行程序:goenv-wCGO_ENABLED=0GOOS=darwinGOARCH=amd64goenv-wCGO_E
  • 2023-06-21如何解决 vscode exe does not exist 的问题
    问题一:使用vscode运行go时,提示需要launch.json文件需配置解决方法:在vscode插件搜索coderunner,然后安装问题二:E:\go\goWorkspace\src\GoProjects2>gorunmain.goexec:"C:\\Users\\向键雄\\AppData\\Local\\Temp\\go-build3787382914\\b001\\exe\\main":filedo
  • 2023-06-18在Mac上编译可运行在Linux, Windows上的GO程序
     编译运行在amd64位linux系统CGO_ENABLED=0GOOS=linuxGOARCH=amd64gobuild 编译运行在amd64位windows系统CGO_ENABLED=0GOOS=windowsgobuild 
  • 2023-06-15docker-compose构建kratos微服务项目运行失败,提示:runtime/cgo: pthread_create failed: Operation not permitted
    这个问题网上解决方案较少,我们这边问题定位是docker-compose.yaml配置问题在配置文件中新增配置如下:privileged:true设置容器的权限为root 最后解决
  • 2023-06-09Golang 配置代理
    通过 goget 命令下载各种依赖时,经常需要访问github/google等网站。配置好代理后,可以快速稳定的访问。常用的go代理goproxyhttps://goproxy.io/zh/阿里云https://mirrors.aliyun.com/goproxy/七牛云https://goproxy.cn设置go代理go1.13及以上版本可以直接用下面
  • 2023-06-05从源码分析 Go 语言使用 cgo 导致的线程增长
    TDengineGo连接器https://github.com/taosdata/driver-go使用cgo调用taos.so中的API,使用过程中发现线程数不断增长,本文从一个cgo调用开始解析Go源码,分析造成线程增长的原因。转换cgo代码对driver-go/wrapper/taosc.go进行转换gotoolcgotaosc.go执行后生成
  • 2023-05-16c-for-go cgo 绑定自动生成工具
    c-for-go可以快速的生成cgo绑定代码的工具,目前有不少golang项目使用了此工具,比如cloudflare/ipvs也使用了此工具参考处理 参考使用这个是libvpx的一个项目yaml定义文件---GENERATOR:PackageName:vpxPackageDescription:"Packagevpxpro
  • 2023-05-15CGO中处理C中的回调函数
    C语言的接口api.h#ifndefAPI_H#defineAPI_H#ifdef__cplusplusextern"C"{#endiftypedefvoid(*IntCallback)(void*,int);voidSetIntCallback(IntCallbackcb,void*data);voidDoIntCallback(intvalue);#ifdef__cplusplus}#endif#endif
  • 2023-03-07Go构建遇到cgo动态库时解决方案
    1.问题golang构建程序很简单,当遇到需要调用c库时,如通常使用net,kafka,sqlite3程序运行时就会调用当前服务器的动态库,如果遇到没有库时,通常还需要下载比如alpine