gpt4 book ai didi

python - python在哪里寻找ctypes.cdll.在windows上打开的dll?

转载 作者:太空狗 更新时间:2023-10-30 00:04:07 27 4
gpt4 key购买 nike

恐怕我在互联网上找不到一个简单的答案,所以也许将来会有一个因为这个问题!

我正在使用 pywiiuse,它是 Windows 上 C wiiuse 库的 python 包装器。通过在源目录中包含 dll、 header 和库,我已经获得了几个简单的 C 示例。

但是,我想知道将 dll 放在哪里以便 pywiiuse 找到它。查看源代码表明它是按如下方式加载的:

dll = ctypes.cdll.wiiuse

当我将 dll 与测试示例放在同一目录中时,运行示例会产生一个模块未找到异常。

python在哪里寻找dll?

最佳答案

Windows DLL search order记录在 MSDN 上。它不是特定于 Python 的,并且无法从命令行选项更改搜索顺序。 (但请参阅链接文章以了解影响搜索顺序的其他方式。)

ctypes/__init__.py 的来源做:

from _ctypes import LoadLibrary as _dlopen

我无法在 _ctypes.c 中找到 LoadLibrary 的定义| ,但大概是 Windows 的包装器 LoadLibraryEx行为类似于 POSIX dlopen 的函数功能,因为这就是它的使用方式。

如果您可以修改 Python 源代码以改为使用 ctypes.CDLL 构造函数,它应该可以工作:

folder = os.path.dirname(os.path.abspath(__file__))
dll_path = os.path.join(folder, "wiiuse.dll")
dll = ctypes.CDLL(dll_path)

如果那不可行,您可以通过猴子修补 ctypes 来处理这种特定情况,但这似乎有点危险。也许将 DLL 复制到与 Python DLL 相同的文件夹中是最简单的选择。

关于python - python在哪里寻找ctypes.cdll.<name>在windows上打开的dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6475150/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com