2

我在 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 打包到 library.zip 中的方法,但我怀疑 ctypes 拒绝了 .zip 文件中的路径。Windows 抱怨它无法加载该模块。

使上述工作是我的第一选择,但后备可能是将所有内容都放在 library.zip 中,除了我的包。关于如何实现这一点的任何想法?

4

0 回答 0