MinGW/GCC延迟加载DLL等效?

Rya*_*ker 4 c++ gcc mingw visual-studio visual-c++

我正在尝试将一些旧的MSVC C++代码移植到MinGW/GCC.

一个问题是项目在很大程度上依赖于/ DELAYLOAD选项来查找并不总是使用的函数,以及正确的dll在运行时的位置.

MinGW/GCC有类似的选择吗?

此代码针对的是Windows平台.

gre*_*ade 6

在elf目标上(对于类Unix系统),您可以-z lazy使用ld(MinGW也使用的链接器)指定选项(无论如何都是默认选项).

据我所知,i386 PE目标(适用于Windows)没有明确的延迟链接选项.我找不到它的文件.

  • 我不认为这是正确的答案。`-z lazy` 启用延迟符号解析,但始终加载共享库。`/DELAYLOAD` 启用延迟链接,即延迟库的加载,直到它的一个函数被调用(Solaris 有这个功能,但它没有到达 Glibc,因为 Drepper^W^W 出于某种原因)。 (4认同)

小智 5

我要补充一点,虽然延迟加载 DLL 似乎是 Windows 操作系统的一部分,但它们实际上是根据链接器生成的小存根实现的。至少,过去是这样。因此,在 Windows 操作系统级别没有正式的“延迟加载”概念。有一个约定,基于链接器发出的二进制代码。