Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在DLL延迟加载处理程序函数中使用MSVCRT函数吗?_Dll_Msvcrt - Fatal编程技术网

我可以在DLL延迟加载处理程序函数中使用MSVCRT函数吗?

我可以在DLL延迟加载处理程序函数中使用MSVCRT函数吗?,dll,msvcrt,Dll,Msvcrt,我已经使用中的说明将延迟加载添加到我的项目中 在“delayhlp.cpp”(DLL加载助手的一个示例实现)中,我看到编写器避免使用任何标准C库(MSVCRT)函数。我是否需要在处理程序函数中执行相同的操作,该函数将由示例DLL加载帮助程序调用 我认为作者的原因是可能有人试图延迟加载MSVCRT本身。我不会这么做的。那么我使用MSVCRT函数是否安全 背景信息。延迟加载第三方DLL的原因是两个版本之间存在函数签名更改,我需要使用其中一个版本运行程序。然后,我提供了一个简单的包装函数,以使DLL

我已经使用中的说明将延迟加载添加到我的项目中

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

我认为作者的原因是可能有人试图延迟加载MSVCRT本身。我不会这么做的。那么我使用MSVCRT函数是否安全

背景信息。延迟加载第三方DLL的原因是两个版本之间存在函数签名更改,我需要使用其中一个版本运行程序。然后,我提供了一个简单的包装函数,以使DLL的函数签名适应所需的签名。当
GetProcAddress
失败时,此函数由延迟加载处理程序(
\uu pfnDliFailureHook2
)注册

一些测试。我在处理函数的开头添加了一个断点。我发现当遇到断点时,
msvcrt.dll
msvcr90d.dll
等已经加载(从VisualStudio的模块窗格)。这是否意味着我可以安全地调用CRT函数

        // 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总是由启动代码加载。

谢谢!是的,我发现CRT确实总是很早加载。(能够进行区分大小写的字符串比较将减少在命令行上指定替代DLL路径的错误倾向。)