对哈希函数的未定义引用

Undefined reference to hash function

提问人:Boku 提问时间:5/25/2016 最后编辑:meskobalazsBoku 更新时间:5/25/2016 访问量:1073

问:

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

我有标题:

#include <search.h>    

已经包括了,但仍然会出现诸如这样的错误。"undefined reference to 'hsearch' "

有没有允许这些函数在Code::Blocks中运行?

c 哈希 代码块 undefined-reference

评论

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

答:

1赞 meskobalazs 5/25/2016 #1

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

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

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

评论

0赞 Boku 5/25/2016
啊,是的,这就是我要找的。我会在网上搜索一下,看看我是否能找到它并让它工作。非常感谢!