我绞尽脑汁试图想出一个优雅的解决方案来解决 DLL 加载问题。我有一个静态链接到加载 DLL 的其他 lib 文件的应用程序。我没有直接加载 DLL。我想在可执行文件所在的文件夹之外的另一个文件夹中有一些 DLL。像 %working_folder%\dlls 之类的东西 - 我宁愿在我的 %working_folder% 中没有几十个(是的......几十个)DLL .
我正在尝试开发一些作为主应用程序一部分的东西,它将调整搜索路径@启动。我遇到的问题是这个新的自定义 DLL 路径不在系统搜索路径中。当我启动应用程序时,它会崩溃(STATUS_DLL_NOT_FOUND),因为必要的 DLL 不在适当的位置。我想做的是检查@startup这个新的自定义DLL文件夹是否在进程环境变量搜索路径中,如果没有添加它。问题是,应用程序会在应用程序执行一行代码之前尝试加载所有这些 DLL。
我该如何解决?我考虑过编写一个帮助应用程序,它首先启动,适当地调整环境变量并通过 CreateProcess 启动主应用程序。我敢肯定这会奏效,但它会让开发人员感到困难。当他们调试主应用程序时,他们不会首先启动辅助应用程序——他们甚至不能这样做。
我尝试了注册表应用程序路径功能,但没有成功。和以前一样的鸡和蛋问题。
我可以在这里做什么?