2011-01-06 7 views
1

Wenn ich versuche, in meinem C++ Klasse zu verwenden libssh2, ich bekomme immer folgende Fehler:libssh2 und C++

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

Wenn ich die gleiche Sache mit C tun, funktioniert alles einwandfrei.

Irgendwelche Hilfe?

Es folgt der Befehl build

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 

folgenden wird die Klassenmemberfunktion

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; 
} 

Ja Linux-Plattform ist

+1

Klingt für mich wie Sie nicht gegen die richtigen Bibliotheken verknüpfen. –

+0

Zeigen Sie uns einige Ihrer C++ - Code (vor allem der Teil, der die Funktionen aufruft, die nicht verknüpfen können). Verwenden Sie Linux? Welche Distribution/Version? –

Antwort

2

Ändern Sie Ihren Anruf zu 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.

Die Reihenfolge der Bibliotheken und Objektdateien in der Parameterliste ist von Bedeutung. Lesen Sie darüber here.

1

Wenn C arbeitet und C++ nicht der Fall, dann wie es klingt Du versäumst es, die libssh2-Funktionsprototypen in einen extern "C" {} Block zu integrieren, wie beschrieben here. (Sie sollten die Header-Datei überprüfen; ich bin ein wenig überrascht, dass es extern "C" {} selbst nicht verwendet.)

+0

Nein, libssh Header-Datei hat exgtern "c" {} – Avinash

+0

@Avinash: Dann vermute ich, dass Sie etwas falsch in Ihrem Build tun. Sie müssen weitere Informationen zur Erstellung Ihres Codes bereitstellen. –

+0

aktualisiert den Build-Befehl. – Avinash