Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 未定义对“\u imp\u ssh\u new';对于libssh_C++_Ssh_Codeblocks_Header Files_Libssh - Fatal编程技术网

C++ 未定义对“\u imp\u ssh\u new';对于libssh

C++ 未定义对“\u imp\u ssh\u new';对于libssh,c++,ssh,codeblocks,header-files,libssh,C++,Ssh,Codeblocks,Header Files,Libssh,我正在尝试创建从windows 10到ubuntu 16.04的ssh连接 代码: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 *p

我正在尝试创建从windows 10到ubuntu 16.04的ssh连接

代码: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”
#包括
#包括
int main()
{
ssh_会话我的ssh_会话;
int rc;
int端口=22;
int verbosity=SSH\u LOG\u协议;
字符*密码;
//打开会话并设置选项
my_ssh_session=ssh_new();
if(my_ssh_session==NULL)
出口(-1);
ssh_选项_集(我的ssh_会话,ssh_选项_主机,“192.168.1.6”);
ssh_选项集(我的ssh_会话,ssh_选项用户,“sajid”);
ssh_选项集(我的ssh_会话、ssh_选项、日志详细性和详细性);
ssh选项集(我的ssh会话,ssh选项密码,aes128 ctr);
rc=ssh\u connect(我的ssh\u会话);
如果(rc!=SSH\u确定)
{
fprintf(stderr,“Error:%s\n”,ssh_get_Error(my_ssh_session));//这里是我获取错误的地方
ssh_free(我的ssh_会话);
出口(-1);
}
password=“pass”;
rc=ssh\u userauth\u password(my\u ssh\u session,NULL,password);
if(rc!=SSH\u AUTH\u SUCCESS)
{
fprintf(stderr,“使用密码进行身份验证时出错:%s\n”,
ssh_获取_错误(我的ssh_会话));
ssh\u断开连接(我的ssh\u会话);
ssh_free(我的ssh_会话);
出口(-1);
}
ssh\u断开连接(我的ssh\u会话);
ssh_free(我的ssh_会话);
}
显示如下错误:

libssh.h与download.cpp以及legacy.h位于同一文件夹中 你能告诉我为什么我不能创建ssh_会话吗

libssh.h和download.cpp以及legacy.h在同一个文件夹中。您可以吗 请告诉我为什么无法创建ssh_会话

您遇到的是链接错误,而不是编译错误。编译器会看到并识别
libssh.h
,但为了构建,您需要为库文件提供与此头文件中声明的内容相匹配的定义。

确保遵循以下步骤:

为了能够编译您正在开发的应用程序,您需要 在编译器命令行中将LIBSSH_STATIC作为define传递,或者 在包含libssh.h之前定义它。这是必要的,因为 动态库需要指定dllimport属性

#define LIBSSH_STATIC 1
#include <libssh/libssh.h>
#定义LIBSSH#u静态1
#包括

你说你有libssh.h,但是库的其余部分在哪里?download.cpp需要libssh.h libssh.h只有一个include,它是-#include“legacy.h”,所以download.cpp、libssh.h和legacy.h都在同一个文件夹中。我不是问include或头文件。实际的图书馆在哪里?我从这里下载了图书馆,它们在“按下载”文件夹中。这些是头文件。在libssh.h中,我将#include“libssh/legacy.h”更改为#include“legacy.h”legacy.h没有任何include@抱歉,朋友,我不太明白你的评论--这个头文件怎么样?顺便说一句,这个链接不是官方的库存储库。@sajidulsam不要再考虑头文件了。您的问题是库文件。这些说明仅适用于静态链接。