【问题标题】:Undefined reference to hash function未定义的哈希函数引用
【发布时间】:2016-09-22 21:48:29
【问题描述】:

我正在尝试在 Code::Blocks 中运行一个程序,在我的程序中我使用了哈希函数,例如 hsearchhcreate,但 Code::Blocks 似乎不允许它们。

我有标题:

#include <search.h>    

已包含,但仍会出现 "undefined reference to 'hsearch' " 等错误。

是否允许这些函数在 Code::Blocks 中运行?

【问题讨论】:

  • 未定义的引用”是链接器错误。
  • 你从哪里得到图书馆的?好像是配置错误,链接器无法链接。
  • @meskobalazs search.h 来自手册页Here
  • 你运行的是linux还是windows?该函数位于标准 libc 中。在 linux 上,它应该“开箱即用”。请参阅ideone.com/mr06W3 我刚刚将手册页中的示例粘贴到。
  • search.h 不是库,而是所谓的“头文件”,实际上是一个 C 源文件。它只提供特定对象或库实现的“接口”,以便编译器知道它。当编译器在最后一步完成时,所需的所有对象/库都与编译器生成的内容链接在一起,以创建最终程序。

标签: c hash codeblocks undefined-reference


【解决方案1】:

头文件只包含声明。您需要安装包含实现的库。

这就是它告诉你的。它发现声明很好,但是链接器没有找到库,因此出现链接错误。

在 Linux 上,search.h 及其实现是libc 的一部分,因此它已经可以使用了。但是,在 Windows 上,您需要获取它的二进制版本,设置 Code::Blocks 的库路径,并使用设置中的链接器选项。

【讨论】:

  • 啊,是的,这就是我要找的。我会在网上搜索一下,看看能不能找到它并让它工作。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 2018-03-09
  • 2014-08-15
  • 2015-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多