延迟加载DLL

我迫切需要帮助,我需要在Visual Studio中pipe理应用程序依赖项。 应用程序仅在特定版本的Windows上链接到DLL,可以说Windows 7,而在其他环境下,不应加载该DLL。 我将如何能够实现这一点,使用DLL延迟加载作为这个话题对我来说是全新的,并没有任何关于这个特定的事情在线提供很好的参考。

问候

您的项目可以指定一个它依赖的DLL,但需要时加载,方法是在链接器/输入/延迟加载的DLL字段中指定它。 对于不同的构建配置,此设置可能有所不同。

MSDN 在这里有一个很好的描述。

基本上你正在做的是设置有问题的DLL在延迟加载部分。 它将不会加载该DLL,直到您调用该DLL中的函数。

而不是使用延迟加载,你有没有考虑使用LoadLibraryGetProcAddress 动态 加载 ? 这可能会更简单的使用。

 typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO); // Call GetNativeSystemInfo if supported or GetSystemInfo otherwise. PGNSI pGNSI; SYSTEM_INFO si; ZeroMemory(&si, sizeof(SYSTEM_INFO)); pGNSI = (PGNSI) GetProcAddress( GetmoduleeHandle(TEXT("kernel32.dll")), "GetNativeSystemInfo"); if(NULL != pGNSI) pGNSI(&si); else GetSystemInfo(&si);