本文主要记录一些之前在项目中使用cgo调用C语言的方法和遇到的一些问题。
在go文件中写c代码
使用cgo时需要先import “C”,然后在上面的注释部分内(/…/)写C代码。其中可以通过CFLAGS和LDFLAGS来指定编译参数。如下代码。
package main
/*
#cgo CFLAGS: -I.
#cgo LDFLAGS: -L.
#include <stdio.h>
void print_something()
{
printf("hello world\n");
}
*/
import "C"
func main(){
C.print_something()
}
go调用c动态库
代码如下。
@func.h
#ifndef _FUN_H_
#define _FUN_H_
void print_something()

本文介绍了如何在Go中使用cgo调用C代码,包括在Go文件中直接写C代码,调用C动态库,以及Go和C之间的类型转换。特别讨论了将`[]byte`作为`char*`传递和传递函数指针的细节,强调了数据结束符和防止内存越界的重要性。
2万+

被折叠的 条评论
为什么被折叠?



