問題:Go 應用程式可以與靜態物件(.so) 檔案中的函數互動嗎?
答案: 是的,使用 Go 從函式庫中載入和呼叫函數是可行的。然而,內建的 syscall 套件不提供 LoadLibrary 函數,儘管網路上有相反的說法。
為了實現這一點,您可以利用 cgo,一個橋接 C 和 Go 程式碼的工具。以下是使用 POSIX C 函式庫中的 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>
在此範例中:
透過此方法,您可以從 Go 程式碼中無縫地呼叫外部函式庫中的函數。
以上是Go 應用程式如何與 .so 檔案內的函數互動?的詳細內容。更多資訊請關注PHP中文網其他相關文章!