Не могу найти bsearch(vc2008), даже включить заголовочный файл
Я поддерживаю старый проект и столкнулся с некоторыми ошибками компоновщика.
Сообщение об ошибке:error LNK2019: unresolved external symbol __imp__bsearch referenced in function "bool __cdecl is_sync_host
Насколько я знаю, bsearch
Функция включена в заголовочный файл "cstdlib" или "stdlib.h", но даже если я включаю заголовок, я не могу найти "bsearch".
Я подозреваю, что это связано с тем, что этот старый проект игнорирует некоторые библиотеки из-за конфликтов символов (я также не знаю, почему они предпочитают опускать библиотеку вместо переименования функций)
Проигнорированные библиотеки: msvcrt.lib;msvcrtd.lib;libcmt.lib;libc.lib
Я пытаюсь добавить эти игнорируемые библиотеки обратно, но затем я сталкиваюсь с множеством проблем "переопределения символов", и я не думаю, что переименование этих функций является приемлемым решением.
Я нашел работу вокруг (заменить bsearch
в std::binary_search
), но я хочу знать, почему и как правильно решить эту проблему (как получается, что компилятор не может найти bsearch?). Благодарю.
1 ответ
error LNK2019:
Это ошибка компоновщика. Ваш код скомпилирован очень хорошо (.c > .o), это связывание, которое доставляет вам проблемы (.o > .exe).
Проигнорированные библиотеки: "msvcrt.lib;msvcrtd.lib;libcmt.lib;libc.lib"
Это означает, что код игнорирует стандартную библиотеку C, поэтому неудивительно, что он не находит стандарт bsearch()
функция...
Вопрос в том, почему? Просто нет причин (о которых я мог подумать), чтобы хорошо написанный код явно игнорировал стандартную библиотеку.
Я пытаюсь добавить эти игнорируемые библиотеки обратно, но потом я сталкиваюсь с множеством проблем с переопределением символов...
Что приводит меня к выводу, что ваш код не "хорошо написан", и в этот момент очень трудно давать советы, не видя код или не говоря "бросить его, это дерьмо".;-)
Я не думаю, что переименование этих функций является приемлемым решением.
Если у вас есть функции в вашем проекте, которые названы как стандартные функции библиотеки, если ваш проект не является стандартной библиотекой, они имеют неправильное имя и должны быть переименованы.
Но сейчас мне бы очень хотелось увидеть рассматриваемый код, чтобы выяснить, что мог иметь в виду оригинальный программист...