登录
首页 >  Golang >  Go问答

通过 go 模块的内存地址从 .so 文件调用 C 函数。 (中央政府组织)

来源:stackoverflow

时间:2024-04-16 09:18:20 152浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《通过 go 模块的内存地址从 .so 文件调用 C 函数。 (中央政府组织)》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

我有一个旧的 .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”传递给该辅助方法来解决这个问题,该方法通过引用调用另一个函数

typedef char (*parse) (char *file);

char bridge (parse p, char* file) {
        p(file);
}

本篇关于《通过 go 模块的内存地址从 .so 文件调用 C 函数。 (中央政府组织)》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>