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

在上面的注释中编写一些 C 代码import "C"很简单:


// foo.go

package 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

$ foo

forty-two == 42

但是,它自己的 .c 文件中的 C 代码:


// foo.c

int fortythree() {

  return 43;

}

...引用自 Go:


// foo.go

func main() {

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

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

}

...不起作用:


$ go install

# foo

could not determine kind of name for C.fortythree


POPMUISE
浏览 293回答 1
1回答

繁星coding

缺少 C 头文件 foo.h:// foo.hint fortythree();像这样从 Go 引用头文件:// foo.gopackage 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$ fooforty-two == 42forty-three == 43
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go