如何在不使用DLL的情况下运行没有依赖的DLL?

问题描述:

我有一个VC++应用程序编译对第三方DLL(当然使用他们的LIB文件)。如何在不使用DLL的情况下运行没有依赖的DLL?

问题是,并非每个场景都涉及该DLL的代码,但Windows拒绝启动应用程序,如果缺少特定的DLL。

我想知道,我该如何解决这个约束。如果真的需要上述DLL,我希望应用程序崩溃。

请忽略这个问题,当应用程序在成功启动后崩溃时它是否是一种很好的品味 - 我会照顾它的。

如何推迟DLL分辨率,直到实际需要加载该DLL为止?

谢谢。

+0

可能的重复http://stackoverflow.com/q/1388388/395718 – Dialecticus 2012-02-02 11:00:26

+0

你说得对。错过了那一个。 – mark 2012-02-02 11:03:24

/DELAYLOAD linker option

在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(延迟加载导入)链接器选项与辅助函数(Visual C++提供的默认实现)来延迟加载DLL。辅助函数将在运行时通过为您调用LoadLibrary和GetProcAddress来加载DLL。