簡體   English   中英

通過go模塊的memory地址從.so文件中調用C function。 (cgo)

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

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