簡體   English   中英

目前有哪些方法可以讓你在C中調用Go函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM