Как связать .so файл с программой cpp

У меня есть двоичный файл libssh2.so.1.0.1 (.so) на моей локальной машине, и у меня нет никаких заголовочных файлов на моей машине.

Это основная программа ssh, которую я пытался подключить к своему серверу по протоколу ssh.
Ссылка: Как установить простое соединение SSH с C ++

Теперь я не могу связать библиотеку (libssh2.so.1.0.1) с приведенным ниже примером программы.

Ниже приведен пример программы, которую я написал, и за ней следуют ошибки.

sshsample.cpp:

#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, "john");
ssh_options_set(my_ssh_session, SSH_OPTIONS_LOG_VERBOSITY, &verbosity);
// Connect to server
rc = ssh_connect(my_ssh_session);
if (rc != SSH_OK)
{
fprintf(stderr, "Error: %s\n", ssh_get_error(my_ssh_session));
ssh_free(my_ssh_session);
exit(-1);
}
// Authenticate ourselves
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);
}

Я скомпилировал вышеуказанный файл с помощью команды ниже

g++ -L. -llibssh2 -o main sshsample.cpp

но я получаю следующую ошибку

sshsample.cpp: In function 'int main()':
sshsample.cpp:8: error: 'ssh_session' was not declared in this scope
sshsample.cpp:8: error: expected `;' before 'my_ssh_session'
sshsample.cpp:11: error: 'SSH_LOG_PROTOCOL' was not declared in this scope
sshsample.cpp:14: error: 'my_ssh_session' was not declared in this scope
sshsample.cpp:14: error: 'ssh_new' was not declared in this scope

Любые предложения / помощь будут полезны

Заранее спасибо …

1

Решение

Вам необходимо включить заголовочный файл libssh2 в ваши модули компиляции, где вызываются API ssh. Вы не можете ожидать, что компилятор решит, что ssh_session без этого. Если у вас правильно установлена ​​библиотека, у вас должен быть доступ к заголовочным файлам, чтобы вызвать ее.

#include <libssh2.h>

Редактировать: Честно говоря, API, которые вы используете в своем примере, принадлежат исходной библиотеке libssh. В вашем примере я не вижу ничего, что бы связывалось с libssh2.

#include <libssh/libssh.h>

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector