Не могу найти bsearch (vc2008), даже включить заголовочный файл

0

Я поддерживаю старый проект и сталкиваюсь с некоторыми ошибками компоновщика.

Сообщение об ошибке:
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: msvcrt.lib;msvcrtd.lib;libcmt.lib;libc.lib

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

Я нашел работу (замените bsearch на std::binary_search), но я хочу знать, почему и как правильно решить эту проблему (как компилятор не может найти bsearch?). Благодарю.

  • 0
    Возможно, вызвано несоответствием ЭЛТ, вы дважды это проверили?
  • 0
    В соответствии с этим вам также необходимо включить search.h . Хотя это вряд ли решит проблему с библиотекой.
Теги:
visual-c++
bsearch

1 ответ

1
error LNK2019:

Это ошибка компоновщика. Ваш код скомпилирован просто отлично (.c>.o), это связывание, которое дает вам проблемы (.o>.exe).

Пропущенные библиотеки: msvcrt.lib; msvcrtd.lib; libcmt.lib; libc.lib "

Это означает, что код игнорирует стандартную библиотеку C, поэтому неудивительно, что он не находит стандартную bsearch()...

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

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

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

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

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

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

  • 0
    Честно говоря, я тоже хочу знать причины
  • 0
    @ user3518786: Я могу понять, но для этого потребуется проверка кода, т.е. больше информации, чем вы можете дать в своем вопросе.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню