Snap lib problem
-
Ich versuche mit der Lib snap zu arbeiten bekomme jetzt aber schon gleich einen dummen Fehler *grml* und zwar :
/tmp/ccj0A5Ug.o: In function
TCRef::~TCRef()': network.cpp:(.text._ZN5TCRefD1Ev[TCRef::~TCRef()]+0x39): undefined reference to
ExeStop(char const*, char const*, char const*, char const*, int const&)'
/tmp/ccj0A5Ug.o: In functionTCRef::UnRef()': network.cpp:(.text._ZN5TCRef5UnRefEv[TCRef::UnRef()]+0x39): undefined reference to
ExeStop(char const*, char const*, char const*, char const*, int const&)'
collect2: ld returned 1 exit statuscode ziemlich simpel:
#include "network.h"
#include <iostream>
#include "snap/stdafx.h"using namespace std;
Network::Network() {
// TODO Auto-generated constructor stub}
int Network::read_data(char *input_file[])
{
cout << input_file[1] << endl;
//Read inputfile
PNGraph Graph = TNGraph::New();Ich denke es ist ein Problem der Einbindung der Bibliotheken, in welcher Reihenfolge usw.
Aber wenn, dann weiss ich nicht wie ich das beheben kann. Hoffe ihr könnt mir helfen.LG
-
Hast Du die *.lib bzw. *.a Datei dem Linker angegeben?
Ich nehme an die TCRef Klasse gehört zur Library, oder?
-
Ja die Klasse gehört zu der Lib.
Ok wie gebe ich sie dem Linker an????
Hatte noch nie solch ein prob :(.LG
-
Mit welcher IDE arbeitest Du?
-
Eclipse ... compiliere aber alles über console ... linux
-
Mit GCC nehme ich an - da muss Dir wer anders helfen oder Du list das GCC Manual / Man Page wie Du Libraries dazulinkst.
-
ich arbeite aber mit g++ ... hmm
-
movco schrieb:
ich arbeite aber mit g++ ... hmm
GCC ist schon lange nicht mehr der "Gnu C Compiler", sondern die "Gnu Compiler Collection". Der g++ ist Teil der GCC.
Zum Angeben der lib "-lname", wenn die lib "libname.so" ist.
Ggf. musst du den Ort, wo die lib liegt, noch mit angeben - "-L/Pfad/zum/dir"
So kann dann ein Aufruf ausschauen:g++ file.cpp -L/home/ich/libs/ -lsnap -o file_exe
(Wenn deine libsnap.so in /home/ich/libs liegt)
-
Falls es eine .a Datei ist: Die muss man wie eine normale Code-Datei angeben, nicht als Library Linken. Also z.B.
g++ --std=c++0x -Wall -O3 main.cpp mylib.a -o program
-
hmm stimmt ich hab es jetzt mit dem kompiliert:
g++ -lrt -o main main.cpp Snap.o -Iglib -Isnap
bekomme jetzt aber den Error:
/tmp/ccNzxNKp.o: In function
main': main.cpp:(.text+0x97): undefined reference to
Interface::Interface()'
main.cpp:(.text+0xa3): undefined reference toNetwork::Network()' main.cpp:(.text+0xaf): undefined reference to
Interface::welcome()'
main.cpp:(.text+0xc2): undefined reference toNetwork::read_data(char**)' main.cpp:(.text+0xd3): undefined reference to
Network::~Network()'
main.cpp:(.text+0xe6): undefined reference toNetwork::~Network()' main.cpp:(.text+0xfa): undefined reference to
Interface::~Interface()'
main.cpp:(.text+0x10d): undefined reference to `Interface::~Interface()'
collect2: ld returned 1 exit status/tmp/ccNxxNKp.o ?
-
Natürlich musst Du auch network.cpp kompilieren und linken.
-
und wie?
Hab schon ewig net mehr mit dem gearbeitet
-
Mit wem?
-
mit g++ und einbinden der cpp dateien beim compilieren ... arbeite immer mit g++ *.cpp ;).
War jetzt lange im Krankenhaus, hab ne Entzündung im Schädel die mir viel Wissen zerstört hat :(.LG
-
Habs lol war ne dumme Frage
g++ -lrt -o main *.cpp Snap.o -Iglib -Isnap
LG und danke für eure Hilfe