[英]Calling C function from .so file by memory address from go module. (cgo)
我有一個 old.so 文件,里面有一個非常復雜的 clang 解析器,我必須從 go 模塊調用它。
...
lib := C.dlopen(C.CString("./resources/bin/parser.so"), C.RTLD_LAZY)
functions_address := C.dlsym(lib, C.CString("parse"))
我已經通過定義一個 C typedef,創建一個輔助方法並將“functions_address”傳遞給該輔助方法來解決這個問題,該輔助方法通過引用調用另一個 function
typedef char (*parse) (char *file);
char bridge (parse p, char* file) {
p(file);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.