微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python在哪里寻找ctypes.cdll打开的dll 在窗户上?

如何解决python在哪里寻找ctypes.cdll打开的dll 在窗户上?

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

来源ctypes/__init__.py

from _ctypes import LoadLibrary as _dlopen

我找不到LoadLibraryin的定义_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 举报,一经查实,本站将立刻删除。