[英]What methods are there currently that allow you to call a Go function in C?
我已經看到了很多不同的方法可以做到,在必須使用大量的包裝和回調方面,它們似乎都不是理想的。 有一個簡單的方法嗎?
例如,我們有:
//foo.go
package foo
import "C"
//export SayFive
func SayFive() int {
return 5
}
這已經被剝離到現在最小,而我現在想要做的就是在C中調用SayFive
函數。
但是,不在此文件的頂部。 能夠做到這一點非常簡單和有用,但我正在尋找這樣的方式:
//foo.c
#include <stdio.h>
int main() {
int a = SayFive();
}
我已經在上面的示例中看到了#include "_cgo_export.h"
,它完全有道理,但是當我完成它並嘗試編譯它時,它失敗了。
任何人都可以解釋所涉及的整個過程,這將允許我們這樣做嗎?
您可以從C中調用Go和Go中的C,但只能在Go程序的框架內調用。
因此,使用main()
的C程序的示例將不起作用,因為這將在C程序的框架內調用Go。
換句話說,Go無法創建可以與C程序靜態或動態鏈接的對象。
因此,您必須將您想要做的事情轉變為頭部,並將Go程序作為主程序,並從中調用C程序部分。 這意味着具有main()
函數的程序必須是Go程序。
希望有道理!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.