scapi.py 文件源码

python
阅读 53 收藏 0 点赞 0 评论 0

项目:pysciter 作者: sciter-sdk 项目源码 文件源码
def SciterAPI():
    """Bind Sciter API."""
    if hasattr(SciterAPI, "_api"):
        return SciterAPI._api

    scdll = None

    import ctypes
    if SCITER_WIN:
        # load 4.x version by default
        try:
            scdll = ctypes.WinDLL(SCITER_DLL_NAME)
        except OSError:
            # try to find 3.x version
            try:
                dllname = "sciter64" if sys.maxsize > 2**32 else "sciter32"
                scdll = ctypes.WinDLL(dllname)
            except OSError:
                pass

    else:
        # same behavior for OSX & Linux
        import ctypes.util
        sclib = ctypes.util.find_library(SCITER_DLL_NAME)
        if not sclib:
            # try LD_LIBRARY_PATH
            def find_in_path(dllname, envname):
                import os
                if envname in os.environ:
                    for directory in os.environ[envname].split(os.pathsep):
                        fname = os.path.join(directory, dllname)
                        if os.path.isfile(fname):
                            return fname
                return None

            sclib = find_in_path(SCITER_DLL_NAME + SCITER_DLL_EXT, 'DYLD_LIBRARY_PATH' if SCITER_OSX else 'LD_LIBRARY_PATH')

        if not sclib:
            # last chance: try to load .so
            sclib = SCITER_DLL_NAME + SCITER_DLL_EXT

        try:
            scdll = ctypes.CDLL(sclib, ctypes.RTLD_LOCAL)
        except OSError:
            pass

    if not scdll:
        raise ImportError(SCITER_LOAD_ERROR)

    scdll.SciterAPI.restype = POINTER(ISciterAPI)
    SciterAPI._api = scdll.SciterAPI().contents
    return SciterAPI._api
# end
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号