2024-05-11 14:10:09 发布
网友
我是非洲裔,我在网上找不到一个简单的答案,所以也许将来会有一个因为这个问题!
我用的是pywiiuse,一个windows上C wiiuse库的python包装器。我已经得到了几个简单的C示例,只需在源目录中包含dll、头和库。
但是,我想知道在哪里放置dll以便pywiuse可以找到它。查看源代码可以看到它的加载方式如下:
dll = ctypes.cdll.wiiuse
当dll与测试示例位于同一目录中时,运行示例会产生模块未找到异常。
python在哪里查找dll?
Windows DLL search order记录在MSDN上。它不是特定于Python的,并且无法从命令行选项更改搜索顺序。(有关影响搜索顺序的其他方法,请参阅链接的文章。)
到^{}的源执行以下操作:
from _ctypes import LoadLibrary as _dlopen
我在^{}中找不到LoadLibrary的定义,但可能它是Windows ^{}函数的包装器,其行为类似于POSIX ^{}函数,因为它就是这样使用的。
LoadLibrary
如果您可以修改Python源代码以使用ctypes.CDLL构造函数,那么它应该可以工作:
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位于同一文件夹中是最简单的选择。
使用Windows API在自定义文件夹中加载自定义DLL需要几个步骤:
if path.exists(cwd() + "bin" + "mydll.dll"): return cwd() + "bin"
Windows DLL search order记录在MSDN上。它不是特定于Python的,并且无法从命令行选项更改搜索顺序。(有关影响搜索顺序的其他方法,请参阅链接的文章。)
到^{} 的源执行以下操作:
我在^{} 中找不到} 函数的包装器,其行为类似于POSIX ^{} 函数,因为它就是这样使用的。
LoadLibrary
的定义,但可能它是Windows ^{如果您可以修改Python源代码以使用
ctypes.CDLL
构造函数,那么它应该可以工作:如果这是不可行的,你可能可以猴子补丁ctypes来处理这个特定的情况,但这似乎有点危险。也许将DLL复制到与Python DLL位于同一文件夹中是最简单的选择。
使用Windows API在自定义文件夹中加载自定义DLL需要几个步骤:
if path.exists(cwd() + "bin" + "mydll.dll"): return cwd() + "bin"
的行。或者如果你觉得自己很勇敢,那就走吧。相关问题 更多 >
编程相关推荐