cgo的效率 golang_golang学习之cgo

package main

/*

#include

#include

*/

import "C"

import "unsafe"

func main() {

cstr := C.CString("HELLO, WORLD")

C.puts(cstr)

C.free(unsafe.Pointer(cstr))

}

说说我遇到的坑吧

虽然go在格式上要求严格,但是有些地方真的不是很人性化,不知道是我的操作有问题,还是怎么,哎

注意:

我使用的ide是liteide,写完代码尝试编译好几次,都报错,报错如下:

# testGcc

could not determine kind of name for C.free

could not determine kind of name for C.puts

这里需要注意的是:

/*

#include

#include

*/

import "C"

import "unsafe"

import “C” 与上面的C代码不能有多余的空行,并且 import “C” 必须是 第一个导入。

还有一个问题,当我们需要依赖一个非C标准库呢?如果按照上述方法的话,会有链接错误。

解决方法:

1、第一种方法

/*

#cgo CFLAGS: -I .

#cgo LDFLAGS: -L . -lrtmp

#include

#include "rtmp.h"

*/

import "C"

2、第二种方法

/*

#cgo pkg-config: rtmp cairo

#include "rtmp.h"

*/

import "C"

有疑问加站长微信联系(非本文作者)

5c5fbae790ec0313d6ee17e8b3dd9ba1.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值