Zai*_*mir 6 c++ windows dll delayed-execution visual-studio
我迫切需要帮助,我需要在Visual Studio中管理应用程序依赖项.应用程序仅在特定版本的Windows上链接到DLL,例如Windows 7.在其他环境中,不应加载DLL.我将如何使用DLL延迟加载实现这一目标,因为这个主题对我来说是全新的,并且没有任何关于此特定事项的在线参考.
问候
Goz*_*Goz 11
MSDN 在这里有一个很好的描述.
基本上你正在做的是设置有问题的DLL在延迟加载部分.在您调用该DLL中的函数之前,它将不会加载该DLL.
从以上链接:
Visual C++链接器现在支持DLL的延迟加载.这使您无需使用Windows SDK函数LoadLibrary和GetProcAddress来实现DLL延迟加载.
在Visual C++ 6.0之前,在运行时加载DLL的唯一方法是使用LoadLibrary和GetProcAddress; 当加载使用它的可执行文件或DLL时,操作系统将加载DLL.
从Visual C++ 6.0开始,当与DLL静态链接时,链接器提供延迟加载DLL的选项,直到程序调用该DLL中的函数.
应用程序可以使用带有辅助函数的/ DELAYLOAD(延迟加载导入)链接器选项延迟加载DLL (Visual C++提供的默认实现).辅助函数将通过为您调用LoadLibrary和GetProcAddress在运行时加载DLL.
在下列情况下,您应该考虑延迟加载DLL:
您的程序可能无法调用DLL中的函数.
DLL中的函数可能直到程序执行后才被调用.
可以在构建.EXE或.DLL项目期间指定DLL的延迟加载.延迟加载一个或多个DLL的.DLL项目本身不应该在Dllmain中调用延迟加载的入口点.
您的项目可以指定它依赖的dll应该在需要时加载,方法是在Linker/Input/Delay Loaded DLLs字段中指定它.对于不同的构建配置,此设置可能不同.
| 归档时间: |
|
| 查看次数: |
15403 次 |
| 最近记录: |