【发布时间】:2021-06-16 20:55:09
【问题描述】:
我有以下场景:
可执行应用程序可以通过 dll 进行自定义,并且可以并行启动多个自定义项。对于常见任务,这些 dll 可以使用动态链接的开源库,例如 OpenSSL(libssl.lib、libcrypto.lib,它们正在检索模块 libssl-1_1-x64。 dll 和 libcrypto-1_1-x64.dll)。
为了检索所需的库模块,它们与 /delayload 选项链接。但是,如果库具有相同的名称(例如,因为它们是同一库的不同版本),则第一个 LoadLibrary 将为所有库进行绑定。
在更抽象的描述中,以下场景将检索 lib1\lib.dll 和 lib2\lib.dll,但它总是会从 调用功能>lib1\lib.dll,因为这个模块首先被检索到。
程序 - 加载 dll1.dll - 链接 /delayload lib1\lib.lib - 需要 lib1\lib.dll - 加载 dll2.dll - 链接 /delayload lib2\lib.lib - 需要 lib2\lib.dll有什么方法可以影响 dll2.dll 的绑定,而不是使用GetProcAddress 来获取检索到的 dll?
【问题讨论】:
标签: c++ dll lib delay-load