如何在不使用依赖DLL的情况下运行该DLL
How to run without a dependent DLL when that DLL is not used?
我有一个针对第三方DLL编译的VC++应用程序(当然是使用他们的LIB文件)。
问题是,并不是每个场景都涉及该DLL的代码,但如果缺少特定的DLL,Windows将拒绝启动应用程序。
我想知道,我该如何解决这个限制。我希望只有在确实需要上述DLL的情况下应用程序才会崩溃。
请忽略这个问题,当一个应用程序在成功启动后崩溃时,这是否是一种好的体验-我会处理它。
如何将DLL解析推迟到实际需要加载该DLL?
谢谢。
请参阅/DELAYLOAD
链接器选项:
Visual C++链接器现在支持延迟加载DLL。这使您无需使用Windows SDK函数LoadLibrary和GetProcAddress来实现DLL延迟加载。
在Visual C++6.0之前,在运行时加载DLL的唯一方法是使用LoadLibrary和GetProcAddress;当加载可执行文件或使用该DLL的DLL时,操作系统将加载该DLL。
从Visual C++6.0开始,当与DLL静态链接时,链接器提供了延迟加载DLL的选项,直到程序调用该DLL中的函数。
应用程序可以使用带有辅助函数(Visual C++提供的默认实现)的/DELAYLOAD(延迟加载导入)链接器选项延迟加载DLL。helper函数将在运行时为您调用LoadLibrary和GetProcAddress来加载DLL。
相关文章:
- 在没有太多条件句的情况下,我如何避免被零除
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 在未初始化映射的情况下,将值插入到映射的映射中
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 如何在没有任何依赖库的情况下在Visual Studio中构建dll?
- 是否可以在不安装可分发的 VC++ 包的情况下将 MSVCRT DLL 与我的应用捆绑在一起
- 可以在不设置链接器>常规>附加库目录的情况下搜索哪种 dll 或 lib
- 在没有提供IDL(用于TLB)的情况下,从COM+dll获取IDL
- 在没有dll的情况下使用libcURL的正确方法是什么?
- 如何在不使用依赖DLL的情况下运行该DLL
- 如何在不使用com的情况下调用perl中的C++dll
- 如何在VC++2015全程序优化的情况下正确地从dll中公开接口
- 如何在不将glew32.dll放入系统根目录的情况下包含它
- 如何在没有sqlite3.dll的情况下使用sqlite3
- 如何在不注册dll的情况下对c++ COM代码进行单元测试?
- 如何在不链接kernel32.dll和ntdll.dll的情况下运行PE映像
- 如何在没有库文件的情况下将dll引用到Visual Studio
- 在vc++中,有没有办法在没有任何头文件的情况下知道dll的导出类?
- c++:如何在没有mingwm10.dll的情况下发布单个可执行文件
- 在不引用DLL/程序集的情况下加载WinRT组件