【问题标题】:undefined reference to `sleep'对“睡眠”的未定义引用
【发布时间】:2013-03-13 21:47:58
【问题描述】:

我刚刚在我的新电脑上安装了 Codeblocks, 现在我正在尝试运行一个名为 CML 的库(它是一个来自学校的库,它不是很好)但是当我尝试运行一些非常基本的示例代码时出现一个奇怪的错误。 它不是 Devcpp 中的代码本身,它编译得很好。

错误:

d:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\..\..\..\libcml.a(video.o):video.c|| undefined reference to sleep'|

有谁知道我该如何解决这个问题?

【问题讨论】:

  • 你能发布一个导致错误的代码的小例子吗?
  • MinGW(或者更确切地说是 Windows)没有函数 sleep,只有 Sleep。错字?
  • 不,我什至不使用睡眠。
  • 我确定它不是代码,因为在 devcpp 中它编译得很好
  • 我刚刚查看了我的 MinGW (4.7.2) 附带的 <unistd.h>。它有一个usleep 的原型(大概包装了Sleep),但没有sleep。让我想知道他们最初是如何编译该库的……

标签: gcc include sleep linker-errors mingw32


【解决方案1】:

Damon 是对的,WinAPI 只提供了一个叫做 Sleep 的函数。该错误看起来像链接器在您链接的库中找不到此符号。

第一个猜测是你必须添加

-lWinmm 

到您的链接器命令行。但是,据我记得 Devcpp IDE 应该默认添加这个库......

【讨论】:

  • 那将是-lkernel32,而不是-lwinmm(是的,这是默认设置),但这仍然不能解决sleepSleep 是不同符号的问题。
  • -lWinmm 没有做到这一点,但我知道 devcpp 使用 mingw 3.4.2 而 CodeBlocks 使用 4.7.2 也许这就是问题所在?
猜你喜欢
  • 1970-01-01
  • 2014-09-08
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
相关资源
最近更新 更多