Jermineの博客

Jermineの博客

书不记,熟读可记;义不精,细思可精;惟有志不立,直是无着力处。

  • 首页
  • Github
  • Go语言标准库
  • Nyx
  • 关于我

Golang生成C/C++可调用的动态库.so和静态库

Golang类似于C的静态语言,效率也接近于C,如果Golang也可以导出可供C调用的库,那可以和很多高级语言say goodbye了,goodbye似乎又有点武断,但至少说,Golang可以做很多事,而且效率优于很多高级语言,这样说应该没有问题。 接下来,就从三个方面分别来介绍Golang中关于库的使用。

2017年03月29日

Golang与C互用以及调用C的so动态库和a静态库

Golang与C的关系非常密切,下面主要介绍在Golang中使用C。

Golang中嵌入C代码

 1 package main
 2 //#include <stdio.h>
 3 //#include <stdlib.h>
 4 /*
 5 void Hello(char *str) {
 6     printf("%s\n", str);
 7 }
 8 */
 9 import "C" //假设把C当成包,其实有点类似C++的名字空间
10  import "unsafe" //C指针的使用,在C代码中申请的空间,GC垃圾回收机制不会管理,所以需要自己手动free申请的空间
11  func main() {
12      s := "Hello Cgo"
13      cs := C.CString(s)
14      C.Hello(cs)
15      C.free(unsafe.Pointer(cs))
16  }

3,4行的注释也可以写/* */形式 第4行与第5行之间不能有空行,同样第9行与第10行之间也不 能有行,否则编译时cgo会报错:

2017年02月23日

标签

  • agent2
  • ai3
  • aider1
  • ai编程1
  • all1
  • alpine linux1
  • arm6
  • arm646
  • autossh2
  • c/c++2
  • ceph1
  • chart1
  • claude code7
  • cli1
  • code-review1
  • codex2
  • conda1
  • cross-compiling1
  • cuda4
  • cursor2
  • database1
  • debug1
  • deeplearn3
  • devops3
  • dns1
  • doas1
  • docker19
  • dotnet core1
  • editor1
  • efficiency4
  • gdb1
  • gemini cli1
  • git5
  • golang6
  • gpu1
  • harbor3
  • helm1
  • hud1
  • influxdb1
  • jenkins1
  • jermine1
  • jira2
  • k8s3
  • kimi1
  • kubernates2
  • kubernetes3
  • kvm5
  • ldap2
  • linux33
  • linux管理1
  • markdown1
  • mcp1
  • microservice1
  • mirrors1
  • mq1
  • music1
  • nexcloud1
  • nvida-docker1
  • nvidia3
  • openclaw1
  • opencv2
  • openshift2
  • openstack1
  • ppt1
  • proot-distro1
  • python3
  • raspberry-pi7
  • rdp1
  • registry1
  • reviewboard1
  • samba1
  • server4
  • shortcut keys1
  • skill1
  • sse1
  • ssh2
  • ssh-tunnel2
  • swap1
  • tensorflow3
  • termux1
  • tools5
  • ubuntu1
  • vs-code2
  • web1
  • websocket1
  • windows4
  • wsl1
  • zsh2
  • 交叉编译1
  • 代理1
  • 关于我1
  • 协议2
  • 反向代理1
  • 反向隧道1
  • 嵌入式1
  • 开发工具2
  • 开源1
  • 成本优化1
  • 故障排查1
  • 效率工具1
  • 敏捷开发1
  • 武汉大学授课1
  • 端口转发1
  • 终端2
  • 编程工具1
  • 自动化1
  • 课程1
  • 跳板机1
  • 远程桌面1
  • 项目管理1

归档

标签云

agent ai aider ai编程 all alpine linux arm arm64 autossh c/c++ ceph chart claude code cli code-review codex conda cross-compiling cuda cursor database debug deeplearn devops dns doas docker dotnet core editor efficiency gdb gemini cli git golang gpu harbor helm hud influxdb jenkins jermine jira k8s kimi kubernates kubernetes kvm ldap linux linux管理 markdown mcp microservice mirrors mq music nexcloud nvida-docker nvidia openclaw opencv openshift openstack ppt proot-distro python raspberry-pi rdp registry reviewboard samba server shortcut keys skill sse ssh ssh-tunnel swap tensorflow termux tools ubuntu vs-code web websocket windows wsl zsh 交叉编译 代理 关于我 协议 反向代理 反向隧道 嵌入式 开发工具 开源 成本优化 故障排查 效率工具 敏捷开发 武汉大学授课 端口转发 终端 编程工具 自动化 课程 跳板机 远程桌面 项目管理
RSS 订阅

Powered by Jermine © 2026 Jermineの博客