Неопределенная ссылка на `_imp__ssh_new'для libssh
Я пытаюсь создать SSH-соединение с Windows 10 на Ubuntu 16.04
Код: download.cpp
#include "libssh.h"
#include <stdlib.h>
#include <stdio.h>
int main()
{
ssh_session my_ssh_session;
int rc;
int port = 22;
int verbosity = SSH_LOG_PROTOCOL;
char *password;
// Open session and set options
my_ssh_session = ssh_new();
if (my_ssh_session == NULL)
exit(-1);
ssh_options_set(my_ssh_session, SSH_OPTIONS_HOST, "192.168.1.6");
ssh_options_set(my_ssh_session, SSH_OPTIONS_USER, "sajid");
ssh_options_set(my_ssh_session, SSH_OPTIONS_LOG_VERBOSITY, &verbosity);
ssh_options_set(my_ssh_session, SSH_OPTIONS_CIPHERS_C_S,"aes128-ctr");
rc = ssh_connect(my_ssh_session);
if (rc != SSH_OK)
{
fprintf(stderr, "Error: %s\n", ssh_get_error(my_ssh_session)); //HERE IS WHERE I GET THE ERROR
ssh_free(my_ssh_session);
exit(-1);
}
password = "pass";
rc = ssh_userauth_password(my_ssh_session, NULL, password);
if (rc != SSH_AUTH_SUCCESS)
{
fprintf(stderr, "Error authenticating with password: %s\n",
ssh_get_error(my_ssh_session));
ssh_disconnect(my_ssh_session);
ssh_free(my_ssh_session);
exit(-1);
}
ssh_disconnect(my_ssh_session);
ssh_free(my_ssh_session);
}
Который показывает ошибки, подобные этим:
libssh.h находится в той же папке, что и download.cpp, а также legacy.h. Скажите, пожалуйста, почему я не могу создать ssh_session?
1 ответ
libssh.h находится в той же папке, что и download.cpp, а также legacy.h. Скажите, пожалуйста, почему я не могу создать ssh_session?
У вас есть ошибка компоновки, а не ошибка компиляции. Компилятор видит и распознает libssh.h
, но для сборки вам нужно предоставить в библиотечный файл соответствующие определения того, что объявлено в этом заголовочном файле.
Обязательно следуйте инструкциям здесь:
Чтобы иметь возможность компилировать разрабатываемое вами приложение, вам нужно либо передать LIBSSH_STATIC как определение в командной строке компилятора, либо определить его, прежде чем включать libssh.h. Это необходимо, поскольку динамическая библиотека должна указывать атрибут dllimport.
#define LIBSSH_STATIC 1 #include <libssh/libssh.h>