在Go 中呼叫Linux 共享庫函數
在此問題中,開發人員尋求從共享對象(.so) 調用函數的幫助他們的Go 程式碼中的檔案。 Python 中的 ctypes 套件可以存取 C 函數,可以作為所需的功能。
使用 cgo 進行靜態共享庫載入
靜態呼叫函數在編譯時已知共享庫,可以使用 cgo 套件。以下是從 libfoo.so 存取 bar() 函數的範例:
package example
// #cgo LDFLAGS: -lfoo
//
#include
import "C"
func main() {
C.bar()
}
使用 cgo 載入動態共享庫
或者,cgo 可以方便地存取運行時動態載入的共享物件。需要利用函數 dlopen()、dlsym() 和 dlclose() 來開啟共用函式庫、擷取函式位址和關閉函式庫。然而,Go 本身並不支援這些函數,需要 C 包裝器來實現必要的邏輯。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3