Борьба с libssh на Windows

Эта проблема

Я пытаюсь построить проект в Visual Studio 2015 на Win10, который использует libssh, но мне не повезло заставить его работать. Я чувствую, что схожу с ума здесь. Я либо полностью отключаюсь, либо пропускаю что-то невероятно очевидное.

Я попытался использовать установщик libssh-0.7.2-msvc.exe из раздела файлов по адресу https://red.libssh.org/projects/libssh/files. Затем я связал его с тестовым проектом C++ в VS2015. Используя пример кода, я могу скомпилировать его:

#include <iostream>

#define LIBSSH_STATIC
#include <libssh/libssh.h>

int main() {
    std::cout << "Starting libssh test" << std::endl;

    ssh_session my_ssh_session = ssh_new();

    if (my_ssh_session == NULL) {
        std::cout << "Failed to initialize" << std::endl;
    }

    ssh_free(my_ssh_session);

    return 0;
}

(Примечание: я пробовал оба #define LIBSSH_STATIC а также #define LIBSSH_STATIC 1 основанный на сообщениях, которые я видел от моего начального поиска ответов. Я даже пытался добавить его в определения препроцессора в свойствах проекта.)

Я могу скомпилировать его, только если у меня установлен 32-битный проект, но я не могу запустить полученный исполняемый файл. Это приводит к ошибке: "Выполнение кода не может быть продолжено, поскольку ssh.dll не был найден. Повторная установка программы может решить эту проблему". Однако я статически связываю ssh.lib, так что я не уверен, почему я получаю эту ошибку.

Поэтому я попытался скомпилировать libssh как 64-битный. Это заняло больше времени, чем я ожидал (у меня были некоторые проблемы с zlib, которые в итоге я просто пропустил, так как это необязательно). Я могу успешно скомпилировать свой проект как 64-битный исполняемый файл, но, опять же, я не могу его запустить. Я получаю ту же ошибку об отсутствии ssh.dll.

Ради этого я удалил определение LIBSSH_STATIC и попытался связать только с DLL. Скопировав ssh.dll из дистрибутива libssh в папку с моей программой и попытавшись запустить его, я получаю сообщение об ошибке: "Не удалось правильно запустить приложение (0xc000007b). Нажмите кнопку ОК, чтобы закрыть приложение".

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

Настройки проекта (все конфигурации, все платформы)

libssh установлен в G:\Libraries\libssh_0.7.2 на моей машине.

Свойства конфигурации> Каталоги VC++> Включить каталоги

  • G:\Libraries\libssh_0.7.2\include;$(IncludePath)

Свойства конфигурации> Каталоги VC++> Библиотечные каталоги

  • G:\Libraries\libssh_0.7.2\lib;$(LibraryPath)

Свойства конфигурации> Линкер> Ввод> Дополнительные зависимости

  • ssh.lib;%(AdditionalDependencies)

краткий обзор пути к libssh

  • libssh_0.7.2
    • бункер
      • ssh.dll
    • включают
      • libssh
        • callbacks.h
        • legacy.h
        • libssh.h
        • libsshpp.hpp
        • server.h
        • sftp.h
        • ssh2.h
    • Lib
      • ssh.lib

1 ответ

1. установить vkpkg 2.win+x, чтобы открыть powershell3. ввести vckpg установить libssh:x64-windows4. интегрировать в Visual Studio: vcpkg интегрировать установить

тогда вы можете включить <libssh.h> в Visual Studio.

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