我在Windows上使用ctypes来访问DLL。通常,我使用相同名称的.py包装DLL,并为DLL添加额外的支持,例如与某些函数一起使用的ctypes结构。我使用以下技术加载DLL。
# Determine the absolute path to the DLL that resides in the same directory as this module.
absolute_path = os.path.join(os.path.dirname(__file__), 'monty.dll')
interface = ctypes.CDLL(absolute_path)
该模块是我维护的软件包的一部分,我想使用Py2exe并将bundle_files设置为1来创建更少的文件。我很高兴将library.zip放在我的.exe旁边。
所以显而易见的问题是monty.py将尝试访问monty.dll,并且它希望路径为... / library.zip/root/dll/monty.dll。
我找到了一种在DLL.zip中封装DLL的方法,但我怀疑ctypes拒绝.zip文件中的路径。 Windows抱怨它无法加载模块。
上面的工作将是我的第一选择,但后备可能是在library.zip中包含除我的包之外的所有内容。关于如何实现这一点的任何想法?