我担心我在互联网上找不到一个简单的答案,所以也许将来会因为这个问题而有一个!
我使用的是pywiiuse,这是windows上C wiiuse库的python包装器。通过在源代码的目录中包含dll、头文件和库,我已经获得了几个简单的C示例。
然而,我想知道把dll放在哪里,这样pywiiuse就能找到它。看一下源代码,可以看到它是按如下方式加载的:
dll = ctypes.cdll.wiiuse当我将dll放在与我的测试示例相同的目录中时,运行示例会产生模块找不到异常。
python在哪里寻找dll?
发布于 2011-06-25 12:52:10
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)如果这是不可行的,你也许能够用猴子补丁ctype来处理这个特定的情况,但这看起来有点危险。也许只需将DLL复制到与Python DLL相同的文件夹中将是最简单的替代方案。
发布于 2015-07-20 16:44:23
使用Windows API加载自定义文件夹中的自定义DLL需要几个步骤:
if path.exists(cwd() + "bin" + "mydll.dll"): return cwd() + "bin"。https://stackoverflow.com/questions/6475150
复制相似问题