gpt4 book ai didi

带有 Visual Studio 2017 的 C++ - 在加载时动态链接时操纵库搜索顺序

转载 作者:行者123 更新时间:2023-11-28 04:27:49 24 4
gpt4 key购买 nike

我在 Windows 上有一个 C++ 应用程序,使用 MSVC 编译,它在运行时链接到许多 dll。该应用程序有一个 Excel 前端:一个 .xll 文件,用户可以将其加载到 excel 中。用户应该能够从任何位置加载 xll。

所有的 dll 都位于共享驱动器上,没有用户将此位置添加到他/她的 Windows 路径变量中(我不希望那样,因为这些 dll 可能与其他程序发生冲突)。我制作的应用程序在应用程序启动时会在本地更改 Windows 路径变量(仅在应用程序运行的 session 中)以包含这些 dll 的路径。

这之所以有效,是因为在我的 Visual Studio 解决方案中,我能够指定应延迟加载这些 dll(运行时动态加载)。

我的问题来了:我想将 boost-python 用于 python 前端。 Boost python 强制我的应用程序在应用程序启动时加载 python27.dll(加载时链接),即没有延迟。

我实际上尝试过延迟链接,但出现以下错误:1>LINK: fatal error LNK1194:由于导入数据符号“__imp___Py_NoneStruct”而无法延迟加载“python27.dll”;没有/DELAYLOAD:python27.dll 的链接

我的问题是我是否可以从我的应用程序中以某种方式修改加载时搜索路径?

请注意,所有使用 Excel 前端的用户并不打算使用 python 前端(这是为另一组用户准备的),因此我无法确定这些 Excel 用户是否安装了 python,尤其不是 2.7 版。

非常感谢,内尔

最佳答案

您无法从应用程序中修改加载时搜索路径,因为您的应用程序尚未加载以执行任何操作。您可以做的最好的事情是某种类型的包装器,例如批处理文件或其他将设置环境的脚本,或者可能将具有完全限定路径的 DLL 链接到网络共享。

关于带有 Visual Studio 2017 的 C++ - 在加载时动态链接时操纵库搜索顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53871302/

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