【问题标题】:CodeBlocks MinGW version not finding files, have to manually include in linkerCodeBlocks MinGW 版本找不到文件,必须手动包含在链接器中
【发布时间】:2014-02-15 05:37:38
【问题描述】:

Windows 7 64 位运行代码:Blocks 13+ MinGW 版本 32 位。

从“Windows 游戏编程大师的技巧”中编译代码,特别是演示 3_4。

这就是问题所在,我知道这是一个 Code::Blocks 问题,但我认为这里的 Code::Blocks 人比程序论坛上的人多。

我安装了 Code:Blocks 13.12 MinGW 版本,我认为我将所有内容都保留为默认值。我加载了我的演示 3_4 项目,在发布模式下构建,我收到一个错误,“未定义对 `PlaySoundA@12' 的引用”。我到处谷歌,发现建议说我必须将 lwinmm 包含到项目/链接器设置中。

但是,在 Code::Blocks 安装文件夹中有一个包含 libwinmm.a 的包含文件夹。我可以很懒惰,只需添加整个 frikkin 库文件列表,如果我这样做,它将在发布模式下编译和运行。如果不这样做,它只会在调试模式下编译和运行。

现在在我看来,如果我安装 Code::Blocks MinGW 版本,Code::Blocks 应该知道这些臭库文件在哪里,并且我不应该添加它们。那么我该如何设置呢?我使用什么选项,我要检查的框,我设置的路径等?如何让 Code::Blocks 不再是懒惰的 POS,并在其自己的安装目录中找到正确的内容,而无需手动将内容添加到链接器列表?

我构建的其他代码也会出现此问题。一些在 Debug 中运行,一些在 Release 中运行,一些在两者中运行。这是为什么?我是否错误地安装了 Code::Blocks,或者在某处错过了某些设置?

感谢您的帮助!

【问题讨论】:

    标签: c++ windows linker


    【解决方案1】:

    您必须添加所需的库。你不能指望链接器去寻找它们。这是 C/C++ 链接机制设计的一部分。如果链接器去寻找库,您将无法控制程序中的内容。

    Windows 上的 IDE 通常会在其默认项目中包含最常用的库(kernel32.lib、user32.lib 等)。但是对于不太广泛使用的库,您必须手动添加它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      相关资源
      最近更新 更多