【发布时间】:2014-05-27 09:31:51
【问题描述】:
我维护一个旧项目并遇到一些链接器错误。
错误信息是:error LNK2019: unresolved external symbol __imp__bsearch referenced in function "bool __cdecl is_sync_host
据我所知,bsearch函数包含在头文件“cstdlib”或“stdlib.h”中,但即使包含头文件,我也找不到“bsearch”。
我怀疑这是因为这个旧项目因为符号冲突而忽略了一些 lib(我也不知道为什么他们更喜欢省略 lib 而不是重命名函数)
被忽略的库:msvcrt.lib;msvcrtd.lib;libcmt.lib;libc.lib
我尝试将那些被忽略的库重新添加回来,但随后我遇到了很多“符号重定义”问题,我认为重命名这些函数不是一个适用的解决方案。
我找到了解决方法(将bsearch 替换为std::binary_search),但我想知道为什么以及如何正确解决这个问题(编译器为什么找不到bsearch?)。谢谢。
【问题讨论】:
-
可能是 CRT 不匹配造成的,您有仔细检查过吗?
-
根据this,还需要包含
search.h。虽然这不太可能解决库问题。
标签: c++ c visual-c++ bsearch