0

我已经使用 http://msdn.microsoft.com/en-us/library/151kt790.aspx中的说明为我的项目添加了延迟加载

在“delayhlp.cpp”(DLL 加载帮助程序的示例实现)__HrLoadAllImportsForDll中,我看到作者避免使用任何标准 C 库 (MSVCRT) 函数。我是否需要在我的处理程序函数中执行相同的操作,该处理程序函数将由示例 DLL 加载帮助程序调用?

我认为作者的原因是有人可能会尝试延迟加载 MSVCRT 本身。我不打算这样做。那么我使用 MSVCRT 功能是否安全?

背景信息。延迟加载第 3 方 DLL 的原因是因为两个版本之间的函数签名发生了变化,我需要使用任一版本运行我的程序。然后,我提供了一个简单的包装函数来使 DLL 的函数签名适应所需的函数签名。此函数在失败__pfnDliFailureHook2时由延迟加载处理程序 ( )注册。GetProcAddress

一些测试。我在处理程序函数的开头添加了一个断点。我发现当断点被命中时,已经加载了等(来自 Visual Studio 的模块窗格)msvcrt.dllmsvcr90d.dll这是否意味着我可以安全地调用 CRT 函数?

4

1 回答 1

1
        // Check to see if it is the DLL we want to load.
        // Intentionally case sensitive to avoid complication of using the CRT
        // for those that don't use the CRT...the user can replace this with
        // a variant of a case insenstive comparison routine.
        //

对于那些不使用 CRT 的人来说,这是更相关的评论。你不会有问题,CRT 总是由启动代码加载的。

于 2011-05-27T00:51:33.790 回答