Portál AbcLinuxu, 10. května 2025 04:36

Dotaz: C++ problém s kompilací malého projektíku (knihovny) v QT

6.2.2009 20:15 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
C++ problém s kompilací malého projektíku (knihovny) v QT
Přečteno: 470×
Odpovědět | Admin
Zdravím, mám dva projekty pojmenované booframelib a boofetch. Vytvořil jsem dva projekty pomocí Qt Creatoru:

booframelib.pro:
QT       += webkit

TARGET = gooframelib
TEMPLATE = lib
//CONFIG += staticlib

DEFINES += GOOFRAMELIB_LIBRARY

SOURCES += goorenderer.cpp

HEADERS += goorenderer.h\
        gooframelib_global.h
Nyní aplikace, která tuto knihovnu využívá:
QT       += webkit

TARGET = goofetch
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp

INCLUDEPATH += ../gooframelib
LIBS += -L../gooframelib
Při kompilaci nicméně dostávám následující problém:
g++ -Wl,-rpath,/opt/qt/4.4.3/lib -o goofetch debug/main.o    -L/opt/qt/4.4.3/lib -L../gooframelib -lQtWebKit -L/opt/qt/4.4.3/lib -L/usr/X11R6/lib -pthread -pthread -pthread -pthread -pthread -pthread -lQtNetwork -pthread -pthread -pthread -pthread -pthread -pthread -lQtGui -pthread -lpng -lSM -lICE -pthread -pthread -lXi -lXrender -lXrandr -lfreetype -lfontconfig -lXext -lX11 -lQtCore -lz -lm -pthread -lgthread-2.0 -lrt -lglib-2.0 -ldl -lpthread
debug/main.o: In function `main':
/home/lzap/projects/qt/gooframe/goofetch/main.cpp:12: undefined reference to `GooRenderer::GooRenderer(QUrl const&)'
debug/main.o: In function `~GooRenderer':
/home/lzap/projects/qt/gooframe/goofetch/../gooframelib/goorenderer.h:18: undefined reference to `vtable for GooRenderer'
collect2: ld returned 1 exit status
Proč g++ hlásí "undefined reference" na objektu z gooframelib, když tam adresář s knihovnou v parametrech opravdu je (-L../gooframelib)?

Zkusil jsem vygenerovat jak statickou (.a soubor) tak dynamickou (.so) knihovnu, stále to hlásí to samé. Díky za tipy.
Later --- Lukáš Zapletal
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.2.2009 20:42 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: C++ problém s kompilací malého projektíku (knihovny) v QT
Odpovědět | | Sbalit | Link | Blokovat | Admin

Zkus přidat parametr -lgooframelib. Pokud mám pravdu a vyjde to, podívej se prosím do manuálové stránky, co znamená parametr -L :-)

7.2.2009 19:22 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: C++ problém s kompilací malého projektíku (knihovny) v QT
Nene knihovna gooframelib neni v systemovem adresari (-L) ale je o uroven vyse v podadresari, takze jsem to (-l) napsal spravne. Alespon podle dokumentace... Problem je, ze ji tam nenajde.
kozzi avatar 7.2.2009 19:30 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: C++ problém s kompilací malého projektíku (knihovny) v QT
Bohužel čteš asi špatnou dokumentaci :-D. -L ti urcuje cesty kde se ma vyhledavat knihovna. -l ti urcuje knihovnu. Takze je potreba tam zadat -lgooframelib
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
7.2.2009 19:32 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: C++ problém s kompilací malého projektíku (knihovny) v QT
HA! Diky za nasmerovani.

Musim tam dat OBE tj. jak -L (adresar) tak -l (jmeno knihovny) :-)

SUPER jede to.

ps - jsem "javista" :-D
kozzi avatar 7.2.2009 19:38 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: C++ problém s kompilací malého projektíku (knihovny) v QT
Jo Java, tu se musím někdy naučit :-D
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
kozzi avatar 7.2.2009 19:36 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: C++ problém s kompilací malého projektíku (knihovny) v QT
teda v pripade ze ta knihovna ma spravny tvar, pripadne ji muzes zadat primo jako objekt ke kompilaci, proste tam zadas cestu i s anzvem bez toho -l
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
7.2.2009 19:32 kovariadam | skóre: 12 | blog: biased | Košice/Brno
Rozbalit Rozbalit vše Re: C++ problém s kompilací malého projektíku (knihovny) v QT
Parameter -L oznacuje cestu kde sa maju hladat kniznice. Parameter -l linkuje s danou kniznicou, teda spravne to ma byt: LIBS += -L../gooframelib -lgooframelib
7.2.2009 19:33 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: C++ problém s kompilací malého projektíku (knihovny) v QT
Diky uz jsem to pochopil :-D
David Watzke avatar 6.2.2009 23:31 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: C++ problém s kompilací malého projektíku (knihovny) v QT
Odpovědět | | Sbalit | Link | Blokovat | Admin
undefined reference to vtable mi to taky dříve házelo, furt jsem přemejšlel kde mám chybu a šlo jen o to, že jsem do nějaký třídy strčil keyword Q_OBJECT a zapomněl znova spustit qmake, aby to zpracoval moc. Doufám, že si to nepletu a bylo to opravdu řešení tohodle problému.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.