mac环境python加载so库报错:OSError("dlopen(, 0x000A): tried: '' (no such file), '/usr/lib/' (not a file), '/Users/mactest/Desktop/ANKE-C/' (not a file), '/usr/lib/' (not a file)")

复制代码
from ctypes import CDLL, RTLD_GLOBAL
from ..anke import currentOS

class LoadSo:
    def __init__(self, soPath, args):
        if currentOS != 'darwin':
            for arg in args:
                """
                1、麒麟、UOS环境循环加载需要主动加载的so,可用
                2、mac环境调用dylib需要注释该循环,原因未知
                    报错:OSError("dlopen(, 0x000A): tried: '' (no such file), '/usr/lib/' (not a file), '/Users/mactest/Desktop/ANKE-C/' (not a file), '/usr/lib/' (not a file)")
                3、可能的原因:
                    主插件包是在本地加载的(RTLD_LOCAL),因此,除非使用显式的dlopen后跟dlsym,否则任何人都看不到任何符号。
                    如果是Linux,我可以通过使用RTLD_GLOBAL标志再次dlopen将该捆绑包升级到全局名称空间,但是在Mac OS X上则不起作用。 
                    但是Mac OS X很好地将内容打包到了包中,因此我只是制作了一个动态库并将其放入插件包目录中。 该库将作为RTLD_GLOBAL自动加载,并且所有Python符号均可用。
                """
                CDLL(arg, mode=RTLD_GLOBAL)
        self.xtx = CDLL(soPath)
复制代码

 

posted @   梧桐潇雨  阅读(253)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示