我正在尝试将libssh与C ++包装器libsshpp.hpp一起使用(它包含在libssh.h中,用C语言编写的libssh库)。首先,我尝试从示例目录g++ -o sshpp libsshpp.cpp -lssh
#include <iostream>
#include <string>
#include <libssh/libsshpp.hpp>
int main(int argc, const char **argv){
ssh::Session session;
try {
if(argc>1)
session.setOption(SSH_OPTIONS_HOST,argv[1]);
else
session.setOption(SSH_OPTIONS_HOST,"localhost");
session.connect();
session.userauthPublickeyAuto();
session.disconnect();
} catch (ssh::SshException e){
std::cout << "Error during connection : ";
std::cout << e.getError() << std::endl;
}
return 0;
}
构建是成功但是当执行sshpp时,它显示错误:./sshpp: symbol lookup error: ./sshpp: undefined symbol: ssh_userauth_publickey_auto
。
我在libsshpp.cpp中查找:
int userauthPublickeyAuto(void){
int ret=ssh_userauth_publickey_auto(c_session, NULL, NULL);
ssh_throw(ret);
return ret;
}
并在libssh.h中:
LIBSSH_API int ssh_userauth_publickey_auto(ssh_session session,
const char *username,
const char *passphrase);
希望任何有libssh经验的人都可以提供帮助
答案 0 :(得分:0)
“符号查找错误”表示可执行文件正在查找该方法的目标代码,但无法找到它。
试试这个: g ++ -o sshpp libsshpp.cpp -L&lt;“libssh的路径”&gt; -lssh