Борьба с 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
- libssh
- Lib
- ssh.lib
- бункер
1 ответ
1. установить vkpkg 2.win+x, чтобы открыть powershell3. ввести vckpg установить libssh:x64-windows4. интегрировать в Visual Studio: vcpkg интегрировать установить
тогда вы можете включить <libssh.h> в Visual Studio.