符号查找错误:未定义的符号

时间:2014-04-04 21:39:38

标签: c++ libssh

我正在尝试将libssh与C ++包装器libsshpp.hpp一起使用(它包含在libssh.h中,用C语言编写的libssh库)。首先,我尝试从示例目录g++ -o sshpp libsshpp.cpp -lssh

中的libsshpp.cpp中删除代码
#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经验的人都可以提供帮助

1 个答案:

答案 0 :(得分:0)

“符号查找错误”表示可执行文件正在查找该方法的目标代码,但无法找到它。

试试这个: g ++ -o sshpp libsshpp.cpp -L&lt;“libssh的路径”&gt; -lssh