致命错误 LNK1104: 无法打开文件 'gdi32.lib'

25

每次我尝试运行我的代码都会出现这个错误。我已经尝试了一切,安装了SDK,但仍然遇到同样的错误。

1>------ Build started: Project: ConsoleApplication6, Configuration: Debug Win32 ------
1>LINK : fatal error LNK1104: cannot open file 'gdi32.lib'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

我正在使用Windows 7和Visual Studio 2012。


1
您的安装出现了问题。您可以检查项目属性页面中的各个目录,特别是库目录,然后验证路径是否有效。 - MicroVirus
7个回答

53

对于任何想知道的人,如果在Win 10创作者更新后使用VS2017生成时出现编译器未找到错误,则这是正确的解决方案。感谢您的答案。 - Maroš Beťko
是的,这个解决方案在Win10创作者更新版的VS2017中对我起作用了。 - Steve Obbayi
还要注意,它为每种架构都有一个组件-“Windows SDK for Desktop C ++ [arch] Apps”。我只安装了x86,无法弄清楚为什么32位构建可以工作,但64位构建会出现此错误。安装amd64组件即可解决。 - Timmmm
我从下面的链接下载了Windows 10 SDK(10.0.15063.0),因为我的Visual Studio安装程序没有列出10.0.15063.0。https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk - Jeff Benshetler

9
在Visual Studio 2017(社区版)中,我通过在项目属性中将Windows SDK版本从10.0.10586.0切换到10.0.16299.0(这是我安装在我的机器上的版本)来解决这个问题。
以下是具体步骤:
1. 在Visual Studio中,进入项目属性:

enter image description here

  1. 选择已安装的SDK版本:

enter image description here

参考资料:VS 开发者社区

尽管(user7880029)的答案是正确的,但我更喜欢这个答案,因为它展示了需要做什么。否则,我需要查找如何找到选择Windows SDK的位置。谢谢您帮我省去了另一个谷歌搜索。 - LUser

6

对于在Windows 10上使用Visual Studio 2015遇到同样问题的用户,可能是由于安装文件损坏所致。如果是这样的话,请启动安装程序进行“修复”操作。

另外,安装Visual Studio 2015 Update 1 RC版本也是个不错的选择。

以上方法已经帮助我解决了同样的问题...


我修复了Visual Studio 2017的安装,但它仍然无法工作。 - stefv

0

据我所知,您尚未定义库的路径。

右键单击项目-->属性

在配置属性下,在“链接器”选项卡上,在“附加库目录”中选择“常规”。选择gdi32.lib的路径:

Enter image description here

然后转到输入选项卡(在常规选项卡下面)。

双击或选择编辑以添加gdi32.lib:

Enter image description here

最后添加你的 "gdi32.lib" 并点击 确定

Enter image description here

顺便提一下,在Visual Studio 2013旗舰版中,默认情况下它有gdi32.lib。

希望这能解决你的问题。


7
除了安装程序出现故障的情况外,所有版本的Visual Studio都已经在“VC++目录”页面中正确设置了默认库目录,并且通过从父级继承,在“链接器->输入->附加依赖项”中出现了“gdi32.lib”及其相关内容。这个答案可能可以解决一个特定问题,但还存在一个更大的潜在问题未被解决。 - MicroVirus

0

为解决此问题,您需要找到包含 gdi32.lib 文件的文件夹。

对于我的系统,我在 C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x86 找到了它。

只需将其添加到项目的属性表中即可。如其他帖子所述,菜单 ProjectProperties,然后选择 VC++ 目录。将该路径添加到顶部。


需要添加什么内容?是gdi32.lib的完整路径吗? - Peter Mortensen

0

如果您将代码从另一台计算机移动过来,可能会在您的平台上使用错误的SDK。请检查项目属性→常规Windows SDK版本,并将其设置为列表中显示的某个内容。


0

我正在使用 Windows 8.1 Visual Studio 2017 专业版,经过将项目属性的 Windows SDK 版本切换到 8.1,构建后再切换回 10.0.16299.0,我终于让它工作了。

我一直在尝试编译 CUDA 的示例项目。

它奇怪地工作了,不要问我为什么。或许这与我之前安装了 Visual Studio Community 2017,然后卸载它以安装专业版有关。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接