恐怕我在互联网上找不到这个问题的简单答案,所以也许将来会因为这个问题而找到一个简单的答案!
我正在使用 pywiiuse,它是 Windows 上 C wiiuse 库的 python 包装器。我已经获得了几个简单的 C 示例,只需将 dll、标头和库包含在源目录中即可。
但是,我想知道将 dll 放在哪里以便 pywiiuse 找到它。查看源码可知其加载方式如下:
dll = ctypes.cdll.wiiuse
当我将 dll 与测试示例放在同一目录中时,运行示例会产生模块未找到异常。
python在哪里寻找dll?
The Windows DLL 搜索顺序MSDN 上有记录。它不是特定于 Python 的,并且无法从命令行选项更改搜索顺序。 (但请参阅链接的文章了解影响搜索顺序的其他方法。)
来源为ctypes/__init__.py does:
from _ctypes import LoadLibrary as _dlopen
我无法找到它的定义LoadLibrary
in _ctypes.c,但大概它是 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 相同的文件夹中是最简单的选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)