Название: undefined reference(((
Отправлено: voipp от Ноябрь 03, 2009, 19:20
Имееются класс MainWindow и библиотека matrix.QT во всех строчках конструктора MainWindow где исопльзуется библиотека matrix находит ошибку undefined reference. Так же он умудрился найти ошибки и в коде саомй библиотеке!(Х)_(Х) а в самом конце вес это добавляет ошибкой collect2 выполнение id завершилось с кодом возврата 1.Что за collect2, что он коллекционирует! mainwindow.cpp #include "mainwindow.h" #include <MATRIX/matrix.h>
MainWindow::MainWindow(QWidget *parent) : QWidget(parent) { prevPoint.setSize(4); center.setSize(4); currPoint.setSize(4); m.mObject[0][0]=50; m.mObject[0][1]=50; m.mObject[1][0]=100; m.mObject[1][1]=50; m.mObject[2][0]=100; m.mObject[2][1]=10; m.mObject[3][0]=50; m.mObject[3][1]=10; m.mObject[0][3]=1; m.mObject[1][3]=1; m.mObject[2][3]=1; m.mObject[3][3]=1; center[0]=75; center[1]=30; center[2]=0; center[3]=1; m.Init_mchangecoord(400); QPointF point(1,1); currPoint=m.Change_coord(point);
} //...........
mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <MATRIX/matrix.h> #include <QtGui>
class MainWindow : public QWidget { Q_OBJECT
public: MainWindow(QWidget *parent = 0); ~MainWindow(); Main_matrix_class m; CVector center; CVector prevPoint, currPoint; void paintEvent(QPaintEvent*); void mousePressEvent(QMouseEvent* mouse); void mouseReleaseEvent(QMouseEvent* mouse); void mouseMoveEvent(QMouseEvent* mouse);
};
#endif // MAINWINDOW_H
matrix.h // Библиотека matrix очень большая - вот ее фрагмент //.. class CRow { protected: unsigned size; // кол-во элементов tableitem *items; // массив элементов public: // конструктор по умолчанию CRow(); // конструктор копирования CRow(const CRow& r); // конструктор с заданным размером CRow(unsigned uSize); // деструктор ~CRow(); // обнуление всех элементов void zero_items(); // кол-во элементов unsigned getSize() const { return size; } // изменение размера столбца, старые значения сохр, новые = 0 CRow& setSize(unsigned uSize); // оператор [], индекс от нуля tableitem& operator [](unsigned uIndex); const tableitem& operator [](unsigned uIndex) const; // оператор вывода //friend ostream& operator << (ostream& s, CRow& r); // оператор ввода //friend istream& operator >> (istream& s, CRow& r); // оператор присваивания CRow& operator = (const CRow& r);[move]<---И здесь компилятор находит ошибку undefined reference[/move] }; /...
matrix.cpp //..... CRow& CRow::operator = (const CRow& r) { setSize(r.size); for (unsigned x = 0; x < size; x++) items[x] = r.items[x]; return *this; }; //....
Название: Re: undefined reference(((
Отправлено: Alex Custov от Ноябрь 03, 2009, 19:48
библитека не прилинкована к основной программе, отсюда и undefined reference. Выложи код библиотеки Matrix, сначала надо разобраться с ней, потом с основной программой.
Название: Re: undefined reference(((
Отправлено: voipp от Ноябрь 03, 2009, 20:05
слишком уж она большая - http ://ifolder.ru/14822575 PS я работаю на Linux Mint 7
Название: Re: undefined reference(((
Отправлено: Alex Custov от Ноябрь 03, 2009, 21:05
ошибки: 1) iostream.h - устарело, STL загловки подключай без расширения ".h" 2) имена STL классов использются без указания видимости "std::", и "using namespace std;" тоже нигде нет предупреждения: 3) строки 80, 290 в matrix.cpp: - пустое выражение, видимо подразумевалось что-то другое 4) строка 585 в matrix.cpp: - пустое тело в if(), видимо подразумевалось что-то другое После правок библиотека откомпилировалась стандартно: Bash $ qmake -project $ правим "TEMPLATE=lib" в .pro $ qmake $ make
P.S. Debian Lenny, g++ 4.3.2, Qt 4.5.2
Название: Re: undefined reference(((
Отправлено: voipp от Ноябрь 03, 2009, 21:51
я ее в проект не добавлял а надо?Может из-за этого библиотека не скомпилилась и компоновщик не нашел ее объектный файл?Я просто не знаю как создавать такого рода вещи.
Название: Re: undefined reference(((
Отправлено: Alex Custov от Ноябрь 03, 2009, 22:54
естественно надо. Или вкомпиливать прямо в основной проект (поменять .pro файл!), или компилить matrix как отдельный проект и подключать в основной через LIBS += и INCLUDEPATH +=. Самое быстрое решение - первое.
Название: Re: undefined reference(((
Отправлено: voipp от Ноябрь 04, 2009, 15:46
а как поменять тогда .pro file не подскажите?
Название: Re: undefined reference(((
Отправлено: Alex Custov от Ноябрь 04, 2009, 15:49
а как поменять тогда .pro file не подскажите?
В SOURCES добавить matrix.cpp, в HEADERS - matrix.h.
Название: Re: undefined reference(((
Отправлено: voipp от Ноябрь 04, 2009, 17:54
Exited with code 2. Error while building project Event_with_mouse When executing build step 'Make'
Название: Re: undefined reference(((
Отправлено: Alex Custov от Ноябрь 04, 2009, 18:28
Exited with code 2. Error while building project Event_with_mouse When executing build step 'Make'
Полный лог ошибок дай, в конце-то концов...
Название: Re: undefined reference(((
Отправлено: voipp от Ноябрь 04, 2009, 18:59
извиняюсь что не догадался сразу( Running build steps for project Event_with_mouse... Configuration unchanged, skipping QMake step. Starting: /usr/bin/make -w make: Вход в каталог `/home/voipp/QTPROGRAMMS/Event_with_mouse' make: *** Нет правила для сборки цели `matrix.cpp', требуемой для `matrix.o'. Останов. make: Выход из каталога `/home/voipp/QTPROGRAMMS/Event_with_mouse' Exited with code 2. Error while building project Event_with_mouse When executing build step 'Make'
Название: Re: undefined reference(((
Отправлено: voipp от Ноябрь 04, 2009, 19:05
вот какой .pro file - TARGET = Event_with_mouse TEMPLATE = app SOURCES += main.cpp \ mainwindow.cpp SOURCES += matrix.cpp
HEADERS += mainwindow.h HEADERS += matrix.h
а вот makefile(неполностью) - ЗЫ библиотека находится по адресу /home/voipp/qtsdk(каккие-то номера)/qt/include/MATRIX main.o: main.cpp mainwindow.h $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
mainwindow.o: mainwindow.cpp mainwindow.h $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp
matrix.o: matrix.cpp matrix.h $(CXX) -c $(CXXFLAGS) $(INCPATH) -o matrix.o matrix.cpp
moc_mainwindow.o: moc_mainwindow.cpp $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindow.o moc_mainwindow.cpp
Название: Re: undefined reference(((
Отправлено: Alex Custov от Ноябрь 04, 2009, 19:07
вот какой .pro file -
такое иногда случается, полностью пересобери проект- "rm -f Makefile && qmake && make clean && make"
Название: Re: undefined reference(((
Отправлено: voipp от Ноябрь 04, 2009, 19:15
WARNING: Failure to find: matrix.cpp WARNING: Failure to find: matrix.h rm -f moc_mainwindow.cpp rm -f main.o mainwindow.o matrix.o moc_mainwindow.o rm -f *~ core *.core g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o main.o main.cpp In file included from main.cpp:2: mainwindow.h:3:27: error: MATRIX/matrix.h: No such file or directory In file included from main.cpp:2: mainwindow.h:13: ошибка: ‘Main_matrix_class’ не является именем типа mainwindow.h:14: ошибка: ‘CVector’ не является именем типа mainwindow.h:15: ошибка: ‘CVector’ не является именем типа make: *** [main.o] Ошибка 1
И еще вот что - matrix.cpp может нужно хранить не в папке matrix а в /usr/src ?
Название: Re: undefined reference(((
Отправлено: Alex Custov от Ноябрь 04, 2009, 19:19
WARNING: Failure to find: matrix.cpp WARNING: Failure to find: matrix.h
И еще вот что - matrix.cpp может нужно хранить не в папке matrix а в /usr/src ? Эти файлы нужно хранить в каталоге с проектом, а их там нет, о чём qmake и сказал.
Название: Re: undefined reference(((
Отправлено: voipp от Ноябрь 04, 2009, 19:22
но я ведь при компиляции указываю опцию поиска в каталогах для описания заголовков! Почему же он не может найти их в папке include/MATRIX
Название: Re: undefined reference(((
Отправлено: voipp от Ноябрь 04, 2009, 19:48
вот кстати файл makefile - ############################################################################# # Makefile for building: Event_with_mouse # Generated by qmake (2.01a) (Qt 4.5.0) on: ?? ????. 4 19:12:33 2009 # Project: Event_with_mouse.pro # Template: app # Command: /usr/bin/qmake -unix -o Makefile Event_with_mouse.pro #############################################################################
####### Compiler, tools and options
CC = gcc CXX = g++ DEFINES = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES) CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES) INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. LINK = g++ LFLAGS = -Wl,-O1 LIBS = $(SUBLIBS) -L/usr/lib -lQtGui -lQtCore -lpthread AR = ar cqs RANLIB = QMAKE = /usr/bin/qmake TAR = tar -cf COMPRESS = gzip -9f COPY = cp -f SED = sed COPY_FILE = $(COPY) COPY_DIR = $(COPY) -r INSTALL_FILE = install -m 644 -p INSTALL_DIR = $(COPY_DIR) INSTALL_PROGRAM = install -m 755 -p DEL_FILE = rm -f SYMLINK = ln -sf DEL_DIR = rmdir MOVE = mv -f CHK_DIR_EXISTS= test -d MKDIR = mkdir -p
####### Output directory
OBJECTS_DIR = ./
####### Files
SOURCES = main.cpp \ mainwindow.cpp \ matrix.cpp moc_mainwindow.cpp OBJECTS = main.o \ mainwindow.o \ matrix.o \ moc_mainwindow.o DIST = /usr/share/qt4/mkspecs/common/g++.conf \ /usr/share/qt4/mkspecs/common/unix.conf \ /usr/share/qt4/mkspecs/common/linux.conf \ /usr/share/qt4/mkspecs/qconfig.pri \ /usr/share/qt4/mkspecs/features/qt_functions.prf \ /usr/share/qt4/mkspecs/features/qt_config.prf \ /usr/share/qt4/mkspecs/features/exclusive_builds.prf \ /usr/share/qt4/mkspecs/features/default_pre.prf \ /usr/share/qt4/mkspecs/features/release.prf \ /usr/share/qt4/mkspecs/features/default_post.prf \ /usr/share/qt4/mkspecs/features/warn_on.prf \ /usr/share/qt4/mkspecs/features/qt.prf \ /usr/share/qt4/mkspecs/features/unix/thread.prf \ /usr/share/qt4/mkspecs/features/moc.prf \ /usr/share/qt4/mkspecs/features/resources.prf \ /usr/share/qt4/mkspecs/features/uic.prf \ /usr/share/qt4/mkspecs/features/yacc.prf \ /usr/share/qt4/mkspecs/features/lex.prf \ Event_with_mouse.pro QMAKE_TARGET = Event_with_mouse DESTDIR = TARGET = Event_with_mouse
first: all ####### Implicit rules
.SUFFIXES: .o .c .cpp .cc .cxx .C
.cpp.o: $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cc.o: $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cxx.o: $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.C.o: $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.c.o: $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
####### Build rules
all: Makefile $(TARGET)
$(TARGET): $(OBJECTS) $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
Makefile: Event_with_mouse.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mkspecs/common/g++.conf \ /usr/share/qt4/mkspecs/common/unix.conf \ /usr/share/qt4/mkspecs/common/linux.conf \ /usr/share/qt4/mkspecs/qconfig.pri \ /usr/share/qt4/mkspecs/features/qt_functions.prf \ /usr/share/qt4/mkspecs/features/qt_config.prf \ /usr/share/qt4/mkspecs/features/exclusive_builds.prf \ /usr/share/qt4/mkspecs/features/default_pre.prf \ /usr/share/qt4/mkspecs/features/release.prf \ /usr/share/qt4/mkspecs/features/default_post.prf \ /usr/share/qt4/mkspecs/features/warn_on.prf \ /usr/share/qt4/mkspecs/features/qt.prf \ /usr/share/qt4/mkspecs/features/unix/thread.prf \ /usr/share/qt4/mkspecs/features/moc.prf \ /usr/share/qt4/mkspecs/features/resources.prf \ /usr/share/qt4/mkspecs/features/uic.prf \ /usr/share/qt4/mkspecs/features/yacc.prf \ /usr/share/qt4/mkspecs/features/lex.prf \ /usr/lib/libQtGui.prl \ /usr/lib/libQtCore.prl $(QMAKE) -unix -o Makefile Event_with_mouse.pro /usr/share/qt4/mkspecs/common/g++.conf: /usr/share/qt4/mkspecs/common/unix.conf: /usr/share/qt4/mkspecs/common/linux.conf: /usr/share/qt4/mkspecs/qconfig.pri: /usr/share/qt4/mkspecs/features/qt_functions.prf: /usr/share/qt4/mkspecs/features/qt_config.prf: /usr/share/qt4/mkspecs/features/exclusive_builds.prf: /usr/share/qt4/mkspecs/features/default_pre.prf: /usr/share/qt4/mkspecs/features/release.prf: /usr/share/qt4/mkspecs/features/default_post.prf: /usr/share/qt4/mkspecs/features/warn_on.prf: /usr/share/qt4/mkspecs/features/qt.prf: /usr/share/qt4/mkspecs/features/unix/thread.prf: /usr/share/qt4/mkspecs/features/moc.prf: /usr/share/qt4/mkspecs/features/resources.prf: /usr/share/qt4/mkspecs/features/uic.prf: /usr/share/qt4/mkspecs/features/yacc.prf: /usr/share/qt4/mkspecs/features/lex.prf: /usr/lib/libQtGui.prl: /usr/lib/libQtCore.prl: qmake: FORCE @$(QMAKE) -unix -o Makefile Event_with_mouse.pro
dist: @$(CHK_DIR_EXISTS) .tmp/Event_with_mouse1.0.0 || $(MKDIR) .tmp/Event_with_mouse1.0.0 $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/Event_with_mouse1.0.0/ && $(COPY_FILE) --parents mainwindow.h matrix.h .tmp/Event_with_mouse1.0.0/ && $(COPY_FILE) --parents main.cpp mainwindow.cpp matrix.cpp .tmp/Event_with_mouse1.0.0/ && (cd `dirname .tmp/Event_with_mouse1.0.0` && $(TAR) Event_with_mouse1.0.0.tar Event_with_mouse1.0.0 && $(COMPRESS) Event_with_mouse1.0.0.tar) && $(MOVE) `dirname .tmp/Event_with_mouse1.0.0`/Event_with_mouse1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/Event_with_mouse1.0.0
clean:compiler_clean -$(DEL_FILE) $(OBJECTS) -$(DEL_FILE) *~ core *.core
####### Sub-libraries
distclean: clean -$(DEL_FILE) $(TARGET) -$(DEL_FILE) Makefile
mocclean: compiler_moc_header_clean compiler_moc_source_clean
mocables: compiler_moc_header_make_all compiler_moc_source_make_all
compiler_moc_header_make_all: moc_mainwindow.cpp compiler_moc_header_clean: -$(DEL_FILE) moc_mainwindow.cpp moc_mainwindow.cpp: mainwindow.h /usr/bin/moc-qt4 $(DEFINES) $(INCPATH) mainwindow.h -o moc_mainwindow.cpp
compiler_rcc_make_all: compiler_rcc_clean: compiler_image_collection_make_all: qmake_image_collection.cpp compiler_image_collection_clean: -$(DEL_FILE) qmake_image_collection.cpp compiler_moc_source_make_all: compiler_moc_source_clean: compiler_uic_make_all: compiler_uic_clean: compiler_yacc_decl_make_all: compiler_yacc_decl_clean: compiler_yacc_impl_make_all: compiler_yacc_impl_clean: compiler_lex_make_all: compiler_lex_clean: compiler_clean: compiler_moc_header_clean
####### Compile
main.o: main.cpp mainwindow.h $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
mainwindow.o: mainwindow.cpp mainwindow.h $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp
matrix.o: matrix.cpp $(CXX) -c $(CXXFLAGS) $(INCPATH) -o matrix.o matrix.cpp
moc_mainwindow.o: moc_mainwindow.cpp $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindow.o moc_mainwindow.cpp
####### Install
install: FORCE
uninstall: FORCE
FORCE:
Название: Re: undefined reference(((
Отправлено: Alex Custov от Ноябрь 04, 2009, 19:57
ты файлы в каталог с проектом положи, и покажи ещё полностью .pro
Название: Re: undefined reference(((
Отправлено: voipp от Ноябрь 05, 2009, 00:13
я положил файлы библиотеки а .pro файл не изменился зато появилось после безошибочной компиляции окошко - qtcreator.bin а в нем написано - Could not find executable please specify one.
Название: Re: undefined reference(((
Отправлено: voipp от Ноябрь 05, 2009, 00:15
и вот что выводит компилятор - Configuration unchanged, skipping QMake step. Starting: /usr/bin/make -w make: Вход в каталог `/home/voipp/QTPROGRAMMS/Event_with_mouse' make: Цель `first' не требует выполнения команд. make: Выход из каталога `/home/voipp/QTPROGRAMMS/Event_with_mouse' Exited with code 0.
Название: Re: undefined reference(((
Отправлено: voipp от Ноябрь 05, 2009, 00:42
Все ошибка найдена спаисбо за помощь!
|