为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 CGO 中使用外部 .c 文件?

如何在 CGO 中使用外部 .c 文件?

Go
POPMUISE 2021-10-04 18:06:01
在上面的注释中编写一些 C 代码import "C"很简单:// foo.gopackage main/*int fortytwo() {    return 42;}*/import "C"import "fmt"func main() {    fmt.Printf("forty-two == %d\n", C.fortytwo())    fmt.Printf("forty-three == %d\n", C.fortythree())}它工作正常:$ go install$ fooforty-two == 42但是,它自己的 .c 文件中的 C 代码:// foo.cint fortythree() {  return 43;}...引用自 Go:// foo.gofunc main() {    fmt.Printf("forty-two == %d\n", C.fortytwo())    fmt.Printf("forty-three == %d\n", C.fortythree())}...不起作用:$ go install# foocould not determine kind of name for C.fortythree
查看完整描述

1 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

缺少 C 头文件 foo.h:


// foo.h

int fortythree();

像这样从 Go 引用头文件:


// foo.go

package main


/*

#include "foo.h"


int fortytwo() {

    return 42;

}

*/

import "C"

import "fmt"


func main() {

    fmt.Printf("forty-two == %d\n", C.fortytwo())

    fmt.Printf("forty-three == %d\n", C.fortythree())

}

看, foo.h 的力量:


$ go install

$ foo

forty-two == 42

forty-three == 43


查看完整回答
反对 回复 2021-10-04
  • 1 回答
  • 0 关注
  • 292 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信