libssh2 и C ++ - PullRequest
       9

libssh2 и C ++

1 голос
/ 06 января 2011

Когда я пытаюсь использовать libssh2 в своем классе C ++, я получаю следующие ошибки:

undefined reference to `libssh2_session_init_ex'
undefined reference to `libssh2_session_startup'

Если я делаю то же самое с использованием C, все работает нормально.

Любойhelp?

Ниже приведена команда сборки

g++ -Wall -g -I/libssh2-1.2.4/src -I/libssh2-1.2.4/include -L/libssh2-1.2.4/src/obj -L/openssl-0.9.8k/ -L/SecuritySDK/3.0.13/RC/LATEST/security/lib  -lssh2 -ldl -lnsl -lresolv -lhash -lhandlers -lcrypto -lssl -lz -lbpwp3   rhost.o rpipe.o rutils.o -o rpipe

Ниже указана функция члена класса

void rhost::InitSession()
{
    m_session = libssh2_session_init();
    if ( libssh2_session_startup(m_session, m_sock) )
    {
        fprintf (stderr, "Failure establishing SSH session\n");
        exit(-1);
    }
    return;
}

Да, платформа - linux

Ответы [ 2 ]

2 голосов
/ 06 января 2011

Измените свой звонок на g++ -Wall -g -I/libssh2-1.2.4/src -I/libssh2-1.2.4/include -L/libssh2-1.2.4/src/obj -L/openssl-0.9.8k/ -L/SecuritySDK/3.0.13/RC/LATEST/security/lib rhost.o rpipe.o rutils.o -o rpip -lssh2 -ldl -lnsl -lresolv -lhash -lhandlers -lcrypto -lssl -lz -lbpwp3.

Порядок библиотек и объектных файлов в списке параметров имеет значение. Читайте об этом здесь .

1 голос
/ 06 января 2011

Если C работает, а C ++ - нет, звучит так, будто вы не включили прототипы функций libssh2 в блок extern "C" {}, как описано здесь . (Вам следует перепроверить файл заголовка; я немного удивлен, что он не использует extern "C" {}.)

...