Точка входа в процедуру не найдена в библиотеке

Я хочу использовать tgbot-cpp в windows. Компилирую с помощью msys2, но при запуске из cmd выдает ошибку:

введите сюда описание изображения

если запускать из msys2 в cmd, то все работает:

введите сюда описание изображения

введите сюда описание изображения

Вопрос: как запускать exe-шник из cmd.


Ответы (1 шт):

Автор решения: HolyBlackCat

Ваша программа подхватывает неправильную версию какой-то из dll, которые использует.

Почему в терминале MSYS2 все работает, а в CMD нет? Разница только в PATH - в первом случае первый элемент в PATH - это /mingw64/bin, в которой как раз лежат правильные версии всех нужных dll.

Решение такое:

  • Ставите себе пакет mingw-w64-x86_64-ntldd.
  • Командой ntldd -R my_program.exe узнаете список всех dll, которые ваша программа использует.
  • Из них выбираете только те, которые лежат в /mingw64/bin, остальные игнорируете.
  • Получившиеся dll копируете из /mingw64/bin в папку, где лежит ваш экзешник.

Если не помогает, тогда делаете вот что:

  • В выводе ntldd ищете все .dll, лежащие в C:\Windows (или вложенных папках).
  • Потом руками открываете /mingw64/bin и смотрите, какие .dll там есть.
  • В идеале одинаковых .dll быть не должно. Если они есть, то удаляете их из C:\Windows. Их там быть не должно, но некоторые кривые инсталлеры (или неразумные программисты) могут их туда положить.
  • Потом повторяете действия из первой половины ответа.
→ Ссылка