我知道这个标题没什么意义,主要是因为很难用一行来解释。所以情况是这样的:
我有一个针对 Windows 2000 和更新版本的二进制程序。现在,我继续添加一些代码来检查用户是否在 Vista/7 下运行,如果是,则检查是否启用了 Aero/DWM。基于此,我将禁用一些与该特定平台无关的内容,并启用一些其他功能。我的主要问题是,为了从 Visual C++ 2008 调用 DwmIsCompositionEnabled,我必须添加 dwmapi.lib 文件并针对它进行编译。在 Vista 或 7 以外的任何系统中运行二进制文件都会出现“无法定位组件。应用程序无法启动,因为未找到 dwmapi.dll”错误。当然,这是预期会发生的,因为 DWM 是新的,不适用于旧平台。
我的问题是:我是否有可能以某种方式设法实现这一目标?一个适用于所有操作系统版本的二进制文件并包含该 DWM 检查代码?本程序是在Visual Studio 2008、Visual C++下使用MFC编写的。
最佳答案
原来我可以告诉链接器延迟加载 dwmapi.dll。
我要感谢 ewanm89,因为他说的话引起了我的共鸣,并引导我找到了真正的答案。
关于c++ - 检查是否启用了 DWM/Aero,并让该代码存在于 2000/XP/Vista/7 的相同二进制文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1317295/