首頁  >  文章  >  後端開發  >  如何在 Go 中從共享物件檔案呼叫函數?

如何在 Go 中從共享物件檔案呼叫函數?

Patricia Arquette
Patricia Arquette原創
2024-11-02 13:51:30685瀏覽

How to Call Functions from Shared Object Files in Go?

從 Go 中的共享物件檔案呼叫函數

可以從 Go 程式中的靜態物件(.so)檔案呼叫函數。與流行的說法相反,Go 標準庫中不存在 syscall.LoadLibrary 函數。相反,在 POSIX 平台上,您可以利用 cgo 來利用 dlopen 等函數。

這裡有一個範例程式碼片段,說明如何實現此目的:

<code class="go">
// #cgo LDFLAGS: -ldl
// #include <dlfcn.h>
import "C"

import fmt

func foo() {
    handle := C.dlopen(C.CString("libfoo.so"), C.RTLD_LAZY)
    bar := C.dlsym(handle, C.CString("bar"))
    fmt.Printf("bar is at %p\n", bar)
}
</code>

透過使用cgo 和適當的系統調用,您可以載入共用物件庫並從Go 程式中調用其導出的函數。

以上是如何在 Go 中從共享物件檔案呼叫函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn