Не могу найти 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() функция...

Вопрос в том, почему? Просто нет причин (о которых я мог подумать), чтобы хорошо написанный код явно игнорировал стандартную библиотеку.

Я пытаюсь добавить эти игнорируемые библиотеки обратно, но потом я сталкиваюсь с множеством проблем с переопределением символов...

Что приводит меня к выводу, что ваш код не "хорошо написан", и в этот момент очень трудно давать советы, не видя код или не говоря "бросить его, это дерьмо".;-)

Я не думаю, что переименование этих функций является приемлемым решением.

Если у вас есть функции в вашем проекте, которые названы как стандартные функции библиотеки, если ваш проект не является стандартной библиотекой, они имеют неправильное имя и должны быть переименованы.

Но сейчас мне бы очень хотелось увидеть рассматриваемый код, чтобы выяснить, что мог иметь в виду оригинальный программист...

Другие вопросы по тегам