1 回答

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
這里有幾個(gè)問題。首先是類型的不兼容。Go 將返回一個(gè) GoInt。第二個(gè)問題是Add()必須導(dǎo)出該函數(shù)才能獲取所需的頭文件。如果您不想更改 Go 代碼,那么在 C 中您必須GoInt使用long long.
一個(gè)完整的例子是:
測試.go
package main
import "C"
//export Add
func Add() C.int {
var a = 23
return C.int(a)
}
func main() {}
測試.c
#include "test.h"
#include <stdio.h>
int main() {
int number = Add();
printf("%d\n", number);
}
然后編譯并運(yùn)行:
go build -o test.so -buildmode=c-shared test.go
gcc -o test test.c ./test.so &&
./test
23
GoInt使用: test.go 的第二個(gè)示例
package main
import "C"
//export Add
func Add() int { // returns a GoInt (typedef long long GoInt)
var a = 23
return a
}
func main() {}
測試.c
#include "test.h"
#include <stdio.h>
int main() {
long long number = Add();
printf("%lld\n", number);
}
然后編譯并運(yùn)行:
go build -o test.so -buildmode=c-shared test.go
gcc -o test test.c ./test.so &&
./test
23
- 1 回答
- 0 關(guān)注
- 127 瀏覽
添加回答
舉報(bào)