【问题标题】:final link failed: Invalid argument when including windows.h最终链接失败:包含 windows.h 时的参数无效
【发布时间】:2026-01-11 11:35:01
【问题描述】:

我已经为在 Windows 上开发的 C++ 设置了带有 CDT 的 MinGW 和 Eclipse。在我#include <windows.h> 之前,一切都很好。一旦我这样做,我就会收到链接器错误消息c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../mingw32/bin/ld.exe: final link failed: Invalid argument,其中开头的路径解析为C:/MinGW/mingw32/bin/ld.exe

我不知道错误消息试图告诉我什么......所以请帮我解密它。

【问题讨论】:

  • 是完整的错误信息吗? (路径也应该没问题,虽然它看起来很疯狂。)
  • @Lol4t0 是的,除了以下collect2: ld returned 1 exit statusC:\MinGW\bin\mingw32-make.exe: *** [Test-Project] Error 1 之外,这是完整的错误消息,但我认为它们在任何情况下都不相关。
  • 对我来说看起来像是一些内部错误。确保您的编译器没有损坏,尝试重建项目...
  • @Lol4t0 你是对的,重新安装编译器解决了这个问题。这意味着我本可以一直在寻找失败的地方>。>非常感谢您将我从这场灾难中拯救出来:D
  • 其实问题太本地化应该关闭或删除。

标签: c++ windows linker g++ mingw


【解决方案1】:

由于我实际上不同意 Lol4t0 的观点,即这里过于本地化,所以这是一个丑陋的答案:重新安装 G++ 解决了这个问题。

我认为问题也可能是我可能第一次忘记安装列出的here(我从哪里得到它)的部件之一......但现在我认识到该链接已完全弃用(2005 )。所以无论如何都应该使用另一种。

【讨论】:

    【解决方案2】:

    也许您缺少命令行上的链接参数之一。

    例如,如果您使用 <windows.h> 中声明的任何 WinAPI 函数,您可能需要添加 -lgdi32 -lkernel32 -luser32

    由于您在 Eclipse 中遇到错误,请在此处添加这些库(gdi32、kernel32、user32):

    项目属性 -> C/C++ 构建 -> 设置 -> GCC 链接器 -> 库 -> “添加库”

    (取自eclipse cdt command line input

    【讨论】:

      最近更新 更多