Portál AbcLinuxu, 29. října 2025 15:44
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../gooframelibPř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 statusProč 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.
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 
. -L ti urcuje cesty kde se ma vyhledavat knihovna. -l ti urcuje knihovnu. Takze je potreba tam zadat -lgooframelib
SUPER jede to.
ps - jsem "javista"
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.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.