gpt4 book ai didi

python - 在 Python 中加载具有依赖项的 DLL

转载 作者:行者123 更新时间:2023-12-01 14:07:44 35 4
gpt4 key购买 nike

我有 proj1.dll依赖于另一个 DLL,proj2.dll .我编译了proj1.dll针对编译器在编译时输出的导入库 proj2.dll在 VS2013 中。我还导出了我有兴趣使用的公共(public)函数。所以现在我有两个独立的 DLL,它们都符合“cdll”标准。

我想使用 proj1.dll在 Python 中,但我遇到了以下问题:

import ctypes

# Crashes saying no entry point for "some_func" in proj2.dll
ctypes.cdll.LoadLibrary("C:\myfolder\proj1.dll")

ctypes.cdll.LoadLibrary("C:\myfolder\proj2.dll") # Loads fine
ctypes.cdll.LoadLibrary("C:\myfolder\proj1.dll") # Loads fine if proj2 is loaded first

在我构建 proj2 时,以前从 Python 调用此 DLL 是可行的。作为静态库并在 proj1 中链接到它.这两个 DLL 存在于同一个文件夹中。我什至尝试将文件夹的路径添加到我的 PATH 环境变量中,以查看这是否是路径问题,但没有任何改变。

我假设 Windows 会加载 proj1.dll然后加载dll的依赖项。我错了吗?调用者(Python)是否必须首先加载依赖 DLL?有谁知道为什么会这样?

最佳答案

您需要确保您的环境路径包含依赖项的路径。这将起作用。

import os
from ctypes import *

path_to_deps = "C:\\myfolder"
os.environ['PATH'] = path_to_deps + os.pathsep + os.environ['PATH']
d = CDLL("C:\myfolder\proj2.dll")

更新:

python 3.8 update notes来电 os.add_dll_directory(path)已添加并用于指定要搜索的 dll 目录。

关于python - 在 Python 中加载具有依赖项的 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39734176/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com