我有以下情况:
可执行应用程序可以通过 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?