G++, Link-Fehler: "...undefined reference to..." treibt mich in den Wahnsinn
-
Saiyaman schrieb:
Sie ist definiert. Sonst wäre ja schon das kompilieren fehlgeschlagen.
Falsch. Dem Compiler reicht es, wenn die Methode deklariert ist. Das Auffinden der Definition überlässt er dem Linker.
-
poste doch mal die relevanten codeteile bitte.
-
Die Linkerfehler selbst sind viel zu umfangreich. Ich weiß, dass ich die Funktionen deklariert und definiert habe. Außerdem kann ich das ja unter Windows problemlos compilen.
MFG
-
sieht nach qt aus.
link mal die entsprechenden libraries mit.
-
es sieht nicht aus als ob er vergessen hat was einzulinken, weil er im Destruktor einer Klasse eine Methode derselben klasse nicht finden kann.
Saiya: ist das ne eigene KLasse? falls ja: quellcode?
-
@pumuckel
ein ausschnitt aus einem qt beispiel, dass mit ausgeliefert wird, wenn du die umsonst und draußen version installierst (sieht extrem danach aus):
#include "trayicon.h" #include "qpopupmenu.h" /*! \class TrayIcon TrayIcon.h \brief The TrayIcon class implements an entry in the system tray. */ /*! Creates a TrayIcon object. \a parent and \a name are propagated to the QObject constructor. The icon is initially invisible. \sa show */ TrayIcon::TrayIcon( QObject *parent, const char *name ) : QObject(parent, name), pop(0), d(0) { } /*! Creates a TrayIcon object displaying \a icon and \a tooltip, and opening \a popup when clicked with the right mousebutton. \a parent and \a name are propagated to the QObject constructor. The icon is initially invisible. \sa show */ TrayIcon::TrayIcon( const QPixmap &icon, const QString &tooltip, QPopupMenu *popup, QObject *parent, const char *name ) : QObject(parent, name), pop(popup), pm(icon), tip(tooltip), d(0) { } /*! Removes the icon from the system tray and frees all allocated resources. */ TrayIcon::~TrayIcon() { sysRemove(); } //.....ps: er ha wahrscheinlich die cpp nicht mitgenommen.
-
hi elise kommst du zum forentreff??
-
Ja, das ist das Trayicon-Beispiel. Das hab ich inzwischen rausgenommen. Aber leider gibts auch die Fehler bei den selbstgeschriebenen Funktionen.
Ich poste die anderen Fehler gleich mal. Die Funktionen/Methoden brauch ich glaub ich nich posten, weil 1. zu umfangreich und 2. erscheinen mir die Fehler sinnlos im Bezug auf die geschriebenen Funktionen.
g++ -o MGM2 .obj/tDES.o .obj/main.o .obj/TitleBar.o .obj/mggc.o .obj/FtpDownloadThread.o .obj/HttpDownloadThread.o .obj/catfiles.o .obj/download.o .obj/options.o .obj/choice.o .obj/information.o .obj/search.o .obj/tray.o .obj/control.o .obj/news.o .obj/stats.o .obj/MainWindow.o .obj/moc_TitleBar.o .obj/moc_mggc.o .obj/moc_FtpDownloadThread.o .obj/moc_HttpDownloadThread.o .obj/moc_MainWindow.o -L/usr/share/qt3/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm
.obj/tDES.o(.text+0x29e): In functionMcbTestSingleDES()': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_empty_rep_storage'
.obj/tDES.o(.text+0x2a5): In functionMcbTestSingleDES()': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_empty_rep_storage'
.obj/tDES.o(.text+0x44e): In functionMcbTestSingleDES()': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_empty_rep_storage'
.obj/tDES.o(.text+0x4cc): In functionMcbTestSingleDES()': : undefined reference tostd::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_empty_rep_storage'
.obj/tDES.o(.text+0x58e): In functionMcbTestSingleDES()': : undefined reference to__gnu_cxx::__exchange_and_add(int volatile*, int)'
.obj/tDES.o(.text+0x5ca): In functionMcbTestSingleDES()': : undefined reference to__gnu_cxx::__exchange_and_add(int volatile*, int)'
.obj/tDES.o(.text+0x61f): In functionMcbTestSingleDES()': : undefined reference to__gnu_cxx::__exchange_and_add(int volatile*, int)'
.obj/tDES.o(.text+0x65a): In functionMcbTestSingleDES()': : undefined reference to__gnu_cxx::__exchange_and_add(int volatile*, int)'
.obj/mggc.o(.text+0x224d): In functionCMGGC::gotCounter()': : undefined reference toCMonkeyCategory::getShortName()'
.obj/mggc.o(.text+0x227a): In functionCMGGC::gotCounter()': : undefined reference toCMonkeyCategory::getEntry(unsigned)'
.obj/mggc.o(.text+0x28cf): In functionCMGGC::getCounter()': : undefined reference toCMonkeyCategory::getShortName()'
.obj/mggc.o(.text+0x28fc): In functionCMGGC::getCounter()': : undefined reference toCMonkeyCategory::getEntry(unsigned)'
.obj/HttpDownloadThread.o(.text+0x15de): In functionCHttpDownloadThread::startNextJob(bool)': : undefined reference toCMonkeyURL::isOptional()'
.obj/HttpDownloadThread.o(.text+0x1611): In functionCHttpDownloadThread::startNextJob(bool)': : undefined reference toCMonkeyURL::getURL()'
.obj/HttpDownloadThread.o(.text+0x177d): In functionCHttpDownloadThread::startNextJob(bool)': : undefined reference toCMonkeyURL::getURL()'
.obj/HttpDownloadThread.o(.text+0x1854): In functionCHttpDownloadThread::startNextJob(bool)': : undefined reference toCMonkeyURL::getNextMirror()'
.obj/HttpDownloadThread.o(.text+0x1934): In functionCHttpDownloadThread::startNextJob(bool)': : undefined reference toCMonkeyURL::getName()'
.obj/HttpDownloadThread.o(.text+0x1b86): In functionCHttpDownloadThread::startNextJob(bool)': : undefined reference toCMonkeyURL::getNextMirror()'
.obj/HttpDownloadThread.o(.text+0x1d8d): In functionCHttpDownloadThread::handleMirror()': : undefined reference toCMonkeyURL::getNextMirror()'
.obj/HttpDownloadThread.o(.text+0x2f2f): In functionCHttpDownloadThread::addJob(QString, QString, QListViewItem*)': : undefined reference toCMonkeyURL::CMonkeyURL[in-charge](QString, QString)'
.obj/HttpDownloadThread.o(.text+0x3388): In functionCHttpDownloadThread::addJob(CMonkeyURL*, QString, QListViewItem*)': : undefined reference toCMonkeyURL::getStdFilename()'
.obj/HttpDownloadThread.o(.text+0x3409): In functionCHttpDownloadThread::addJob(CMonkeyURL*, QString, QListViewItem*)': : undefined reference toCMonkeyURL::getURL()'
.obj/HttpDownloadThread.o(.text+0x351c): In functionCHttpDownloadThread::addJob(CMonkeyURL*, QString, QListViewItem*)': : undefined reference toCMonkeyURL::getStdFilename()'
.obj/HttpDownloadThread.o(.text+0x3767): In functionCHttpDownloadThread::addJob(CMonkeyURL*, QString, QListViewItem*)': : undefined reference toCMonkeyURL::getStdFilename()'
.obj/catfiles.o(.text+0x6a7): In functionCMGGC::loadCategoryFiles(QStringList)': : undefined reference toCMonkeyCategory::getName()'
.obj/catfiles.o(.text+0xcdd): In functionCMGGC::loadCategoryFiles(QStringList)': : undefined reference toCMonkeyCategory::CMonkeyCategory[in-charge](QString)'
.obj/catfiles.o(.text+0xd15): In functionCMGGC::loadCategoryFiles(QStringList)': : undefined reference toCMonkeyCategory::~CMonkeyCategory [in-charge]()'
.obj/catfiles.o(.text+0xe1a): In functionCMGGC::loadCategoryFiles(QStringList)': : undefined reference toCMonkeyCategory::setFileName(QString)'
.obj/catfiles.o(.text+0xe65): In functionCMGGC::loadCategoryFiles(QStringList)': : undefined reference toCMonkeyCategory::setContent(QString&)'
.obj/catfiles.o(.text+0xf59): In functionCMGGC::loadCategoryFiles(QStringList)': : undefined reference toCMonkeyCategory::~CMonkeyCategory [in-charge]()'
.obj/catfiles.o(.text+0x10a0): In functionCMGGC::loadCategoryFiles(QStringList)': : undefined reference toCMonkeyCategory::CMonkeyCategory[in-charge](QString)'
.obj/catfiles.o(.text+0x10d8): In functionCMGGC::loadCategoryFiles(QStringList)': : undefined reference toCMonkeyCategory::~CMonkeyCategory [in-charge]()'
.obj/catfiles.o(.text+0x1123): In functionCMGGC::loadCategoryFiles(QStringList)': : undefined reference toCMonkeyCategory::setMGSBContent(QString&)'
.obj/catfiles.o(.text+0x12b8): In functionCMGGC::loadCategoryFiles(QStringList)': : undefined reference toCMonkeyCategory::~CMonkeyCategory [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZN15CMonkeyCategoryC1ERKS_+0x36b): In functionCMonkeyCategory::CMonkeyCategory[in-charge](CMonkeyCategory const&)': : undefined reference toCMonkeyEntry::~CMonkeyEntry [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZN15CMonkeyCategoryC1ERKS_+0x4fd): In functionCMonkeyCategory::CMonkeyCategory[in-charge](CMonkeyCategory const&)': : undefined reference toCMonkeyURL::~CMonkeyURL [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZN15CMonkeyCategoryC1ERKS_+0x58c): In functionCMonkeyCategory::CMonkeyCategory[in-charge](CMonkeyCategory const&)': : undefined reference toCMonkeyEntry::~CMonkeyEntry [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZNSt6vectorI10CMonkeyURLSaIS0_EEaSERKS2_+0x145): In functionstd::vector<CMonkeyURL, std::allocator<CMonkeyURL> >::operator=(std::vector<CMonkeyURL, std::allocator<CMonkeyURL> > const&)': : undefined reference toCMonkeyURL::~CMonkeyURL [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZNSt6vectorI10CMonkeyURLSaIS0_EEaSERKS2_+0x4c5): In functionstd::vector<CMonkeyURL, std::allocator<CMonkeyURL> >::operator=(std::vector<CMonkeyURL, std::allocator<CMonkeyURL> > const&)': : undefined reference toCMonkeyURL::~CMonkeyURL [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZNSt6vectorI10CMonkeyURLSaIS0_EEaSERKS2_+0x559): In functionstd::vector<CMonkeyURL, std::allocator<CMonkeyURL> >::operator=(std::vector<CMonkeyURL, std::allocator<CMonkeyURL> > const&)': : undefined reference toCMonkeyURL::~CMonkeyURL [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZNSt6vectorI10CMonkeyURLSaIS0_EEaSERKS2_+0x596): In functionstd::vector<CMonkeyURL, std::allocator<CMonkeyURL> >::operator=(std::vector<CMonkeyURL, std::allocator<CMonkeyURL> > const&)': : undefined reference toCMonkeyURL::~CMonkeyURL [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZNSt6vectorI12CMonkeyEntrySaIS0_EEaSERKS2_+0x195): In functionstd::vector<CMonkeyEntry, std::allocator<CMonkeyEntry> >::operator=(std::vector<CMonkeyEntry, std::allocator<CMonkeyEntry> > const&)': : undefined reference toCMonkeyEntry::~CMonkeyEntry [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZNSt6vectorI12CMonkeyEntrySaIS0_EEaSERKS2_+0x855): In functionstd::vector<CMonkeyEntry, std::allocator<CMonkeyEntry> >::operator=(std::vector<CMonkeyEntry, std::allocator<CMonkeyEntry> > const&)': : undefined reference toCMonkeyEntry::~CMonkeyEntry [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZNSt6vectorI12CMonkeyEntrySaIS0_EEaSERKS2_+0x93d): In functionstd::vector<CMonkeyEntry, std::allocator<CMonkeyEntry> >::operator=(std::vector<CMonkeyEntry, std::allocator<CMonkeyEntry> > const&)': : undefined reference toCMonkeyEntry::~CMonkeyEntry [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZNSt6vectorI12CMonkeyEntrySaIS0_EEaSERKS2_+0x989): In functionstd::vector<CMonkeyEntry, std::allocator<CMonkeyEntry> >::operator=(std::vector<CMonkeyEntry, std::allocator<CMonkeyEntry> > const&)': : undefined reference toCMonkeyEntry::~CMonkeyEntry [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZNSt6vectorI12CMonkeyEntrySaIS0_EEaSERKS2_+0xb9f): In functionstd::vector<CMonkeyEntry, std::allocator<CMonkeyEntry> >::operator=(std::vector<CMonkeyEntry, std::allocator<CMonkeyEntry> > const&)': : undefined reference toCMonkeyURL::~CMonkeyURL [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZNSt6vectorI12CMonkeyEntrySaIS0_EEaSERKS2_+0xc2f): In functionstd::vector<CMonkeyEntry, std::allocator<CMonkeyEntry> >::operator=(std::vector<CMonkeyEntry, std::allocator<CMonkeyEntry> > const&)': : undefined reference toCMonkeyURL::~CMonkeyURL [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZNSt6vectorI15CMonkeyCategorySaIS0_EE5eraseEN9__gnu_cxx17__normal_iteratorIPS0_S2_EES6_+0xd5): In functionstd::vector<CMonkeyCategory, std::allocator<CMonkeyCategory> >::erase(\_\_gnu\_cxx::\_\_normal\_iterator<CMonkeyCategory*, std::vector<CMonkeyCategory, std::allocator<CMonkeyCategory> > >, \_\_gnu\_cxx::\_\_normal\_iterator<CMonkeyCategory*, std::vector<CMonkeyCategory, std::allocator<CMonkeyCategory> > >)': : undefined reference toCMonkeyCategory::~CMonkeyCategory [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZNSt6vectorI15CMonkeyCategorySaIS0_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_+0x185): In functionstd::vector<CMonkeyCategory, std::allocator<CMonkeyCategory> >::\_M\_insert\_aux(\_\_gnu\_cxx::\_\_normal_iterator<CMonkeyCategory*, std::vector<CMonkeyCategory, std::allocator<CMonkeyCategory> > >, CMonkeyCategory const&)': : undefined reference toCMonkeyCategory::~CMonkeyCategory [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZNSt6vectorI15CMonkeyCategorySaIS0_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_+0x20a): In functionstd::vector<CMonkeyCategory, std::allocator<CMonkeyCategory> >::\_M\_insert\_aux(\_\_gnu\_cxx::\_\_normal_iterator<CMonkeyCategory*, std::vector<CMonkeyCategory, std::allocator<CMonkeyCategory> > >, CMonkeyCategory const&)': : undefined reference toCMonkeyCategory::~CMonkeyCategory [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZNSt6vectorI15CMonkeyCategorySaIS0_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_+0x2c0): In functionstd::vector<CMonkeyCategory, std::allocator<CMonkeyCategory> >::\_M\_insert\_aux(\_\_gnu\_cxx::\_\_normal_iterator<CMonkeyCategory*, std::vector<CMonkeyCategory, std::allocator<CMonkeyCategory> > >, CMonkeyCategory const&)': : undefined reference toCMonkeyCategory::~CMonkeyCategory [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZNSt6vectorI15CMonkeyCategorySaIS0_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_+0x310): In functionstd::vector<CMonkeyCategory, std::allocator<CMonkeyCategory> >::\_M\_insert\_aux(\_\_gnu\_cxx::\_\_normal_iterator<CMonkeyCategory*, std::vector<CMonkeyCategory, std::allocator<CMonkeyCategory> > >, CMonkeyCategory const&)': : undefined reference toCMonkeyCategory::~CMonkeyCategory [in-charge]()'
.obj/catfiles.o(.gnu.linkonce.t._ZNSt6vectorI15CMonkeyCategorySaIS0_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_+0x378): more undefined references toCMonkeyCategory::~CMonkeyCategory [in-charge]()' follow .obj/download.o(.text+0x49e): In functionCMGGC::downloadSelectedEntry()':
: undefined reference toCMonkeyCategory::getEntry(unsigned)' .obj/download.o(.text+0x4be): In functionCMGGC::downloadSelectedEntry()':
: undefined reference toCMonkeyCategory::getShortName()' .obj/download.o(.text+0x530): In functionCMGGC::downloadSelectedEntry()':
: undefined reference toCMonkeyCategory::getEntry(unsigned)' .obj/download.o(.text+0x5be): In functionCMGGC::downloadSelectedEntry()':
: undefined reference toCMonkeyCategory::getEntry(unsigned)' .obj/download.o(.text+0x5ca): In functionCMGGC::downloadSelectedEntry()':
: undefined reference toCMonkeyEntry::getDownload(unsigned)' .obj/download.o(.text+0x5d6): In functionCMGGC::downloadSelectedEntry()':
: undefined reference toCMonkeyURL::getStdFilename()' .obj/download.o(.text+0x652): In functionCMGGC::downloadSelectedEntry()':
: undefined reference toCMonkeyCategory::getEntry(unsigned)' .obj/download.o(.text+0x65e): In functionCMGGC::downloadSelectedEntry()':
: undefined reference toCMonkeyEntry::getDownload(unsigned)' .obj/download.o(.text+0x8a3): In functionCMGGC::downloadSelectedEntry()':
: undefined reference toCMonkeyCategory::getEntry(unsigned)' .obj/choice.o(.text+0xfc): In functionCMGGC::changeCategory(int)':
: undefined reference toCMonkeyCategory::getEntry(unsigned)' .obj/choice.o(.text+0x13c): In functionCMGGC::changeCategory(int)':
: undefined reference toCMonkeyCategory::getEntry(unsigned)' .obj/choice.o(.text+0x1c2): In functionCMGGC::changeCategory(int)':
: undefined reference toCMonkeyCategory::getEntry(unsigned)' .obj/choice.o(.text+0x36c): In functionCMGGC::changeCategory(int)':
: undefined reference toCMonkeyCategory::getSize()' .obj/choice.o(.text+0x3f7): In functionCMGGC::changeCategory(int)':
: undefined reference toCMonkeyCategory::getFileName()' .obj/choice.o(.text+0x809): In functionCMGGC::showScreenshot(unsigned, unsigned, bool)':
: undefined reference toCMonkeyCategory::getEntry(unsigned)' .obj/choice.o(.text+0x87a): In functionCMGGC::showScreenshot(unsigned, unsigned, bool)':
: undefined reference toCMonkeyCategory::getEntry(unsigned)' .obj/choice.o(.text+0xc30): In functionCMGGC::showScreenshot(unsigned, unsigned, bool)':
: undefined reference toCMonkeyCategory::getEntry(unsigned)' .obj/choice.o(.text+0xfba): In functionCMGGC::changeEntry(int)':
: undefined reference toCMonkeyCategory::getEntry(unsigned)' .obj/choice.o(.text+0x1095): In functionCMGGC::changeEntry(int)':
: undefined reference toCMonkeyCategory::getEntry(unsigned)' .obj/choice.o(.text+0x1100): more undefined references toCMonkeyCategory::getEntry(unsigned)' follow
.obj/MainWindow.o(.text+0x3139): In functionCMainWindow::~CMainWindow [in-charge deleting]()': : undefined reference toCMonkeyCategory::~CMonkeyCategory [in-charge]()'
.obj/MainWindow.o(.text+0x3343): In functionCMainWindow::~CMainWindow [in-charge deleting]()': : undefined reference toCMonkeyCategory::~CMonkeyCategory [in-charge]()'
.obj/MainWindow.o(.text+0x3719): In functionCMainWindow::~CMainWindow [in-charge]()': : undefined reference toCMonkeyCategory::~CMonkeyCategory [in-charge]()'
.obj/MainWindow.o(.text+0x3923): In functionCMainWindow::~CMainWindow [in-charge]()': : undefined reference toCMonkeyCategory::~CMonkeyCategory [in-charge]()'
.obj/MainWindow.o(.text+0x3cf9): In functionCMainWindow::~CMainWindow [not-in-charge]()': : undefined reference toCMonkeyCategory::~CMonkeyCategory [in-charge]()'
.obj/MainWindow.o(.text+0x3f03): more undefined references to `CMonkeyCategory::~CMonkeyCategory [in-charge]()' follow
collect2: ld returned 1 exit status
make: *** [MGM2] Fehler 1MfG
-
Argh!! Unter Windows mit g++ und MingW hab ich den gleichen linker-fehler.
Was ist mit G++ los ?! Ich dachte dieser Compiler sei besser als der von Visual C++ 7.1 ...
MFG
-
hast du ALLE cpp-Dateien mit eingelinkt?
Poste mal bitte
- deinen Quellcode (mit Dateinamen bitte), wenns geht reduziert aufs wesentliche, also funktionsrümpfe kannst du auslassen, nur andeuten welche funktionen und methoden du wo deklariert und wo implementiert hast
- die Befehle, den du zum kompilieren und linken benutzt (komplette Befehle mit allen optionen), bzw. die makefile, so du denn eine benutzt.
-
Ich dachte dieser Compiler sei besser als der von Visual C++ 7.1 ...
Besser oder nicht (subjektiv sage ich "nein") - ein guter Compiler zeichnet sich nicht dadurch aus, dass ein Unbedarfter damit klarkommt.