【发布时间】:2020-12-06 05:27:03
【问题描述】:
我有一种情况,我需要在运行时(使用LoadLibrary)从同一目录中存在的另一个 DLL (libembed.dll) 加载一个 DLL (libcocotb.dll)。这些 DLL 与应用程序不在同一目录中。
> tree
.
├── ...
├── libcocotb.dll
└── libembed.dll
仅指定库名称LoadLibrary("libcocotb.dll"),未找到该库。 LoadLibrary(".\\libcocotb.dll"),没有找到图书馆。将目录添加到PATH 似乎是错误的答案,我需要在运行时确定目录的位置,因为二进制文件需要可重定位(它们最终会进入 Python 轮子)。
在 Linux 上,我可以将 $ORIGIN 添加到加载 DLL 的 RPATH 中。 Windows上没有类似的东西吗?我对Windows loader和库系统不是很熟悉。
【问题讨论】:
-
有点难以理解为什么您不想使用 dll 的完整路径。一个简单的解决方案。
-
我必须计算 dll 的路径。在应用程序运行之前我不知道它在哪里。
-
在应用程序运行之前您不需要知道它。这是您的解决方案。
-
那很模糊,你能详细说明一下吗?
-
什么是模糊的?使用 dll 的完整路径。