如何解决python在哪里寻找ctypes.cdll打开的dll 在窗户上?
在Windows动态链接库搜索顺序被记录在MSDN上。它不是特定于Python的,并且无法通过命令行选项更改搜索顺序。(但请参阅链接的文章,以了解其他影响搜索顺序的方法。)
from _ctypes import LoadLibrary as _dlopen
我找不到LoadLibrary
in的定义_ctypes.c
,但大概是WindowsLoadLibraryEx
函数的包装,其行为类似于POSIXdlopen
函数,因为这是使用它的方式。
如果可以修改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相同的文件夹中将是最简单的选择。
解决方法
我很无法在互联网上找到一个简单的答案,所以将来可能会因为这个问题而有一个答案!
我正在使用pywiiuse,这是Windows上C wiiuse库的python包装器。通过将dll,标头和库包含在源目录中,我已经获得了几个简单的C示例。
但是,我想知道将dll放在哪里,以便pywiiuse可以找到它。查看源代码可以看到它的加载方式如下:
dll = ctypes.cdll.wiiuse
当我将dll与测试示例放在同一目录中时,运行示例将产生模块未找到异常。
python在哪里寻找dll?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。