Есть такой проект - http://iae.dp.ua/ - JazzКлиент написан на c++ (qt). Не могу откомпилировать на своей системе, прошу помочь.
На что ругается компилятор (gcc version 3.3.3 [FreeBSD]) :c++ -c -pipe -Wall -W -O -pipe -mcpu=pentiumpro -D_THREAD_SAFE -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -Wno-deprecated -I/usr/local/share/qt/mkspecs/freebsd-g++ -I. -I/usr/local/include -I/usr/X11R6/include -o dataSocket.o dataSocket.cpp
dataSocket.cpp: In function `void getFile(QString, QObject*, int, bool)':
dataSocket.cpp:81: error: default argument given for parameter 3 of `void
getFile(QString, QObject*, int, bool)'
datasocket.h:26: error: after previous specification in `void getFile(QString,
QObject*, int, bool)'
dataSocket.cpp:81: error: default argument given for parameter 4 of `void
getFile(QString, QObject*, int, bool)'
datasocket.h:26: error: after previous specification in `void getFile(QString,
QObject*, int, bool)'
gmake: *** [dataSocket.o] Ошибка 1В datasocket.h:26:
void getFile(QString url,QObject *widget,int menu_id=-1,bool te=false);
В datasocket.cpp:
void getFile(QString url,QObject *widget,int menu_id=-1,bool te=false)
{
}То есть прототип и объявление функции полностью совпадают. На что тогда ругается компилятор?
Второй момент - я изменяю прототип функции, убрав предопределения аргументов. Дальше компиляция идет. Но в программе часто встречаются вызовы функции:
getFile(img,widget);
то есть в таком вызове пропущено два параметра, на что компилятор естественно ругается. В чем причина? Ведь у других все компилируется.
убери предопределения аргументов из datasocket.cpp а в datasocket.h оставь или ты именно так и делал ?
>убери предопределения аргументов из datasocket.cpp а в datasocket.h оставь или ты
>именно так и делал ?Делал наоборот - убирал предопределения аргументов в прототипе (datasocket.h). В новом стандарте предопределения запрещены?
Сделал так, как ты посоветовал - вроде стало нормально компилироваться, но выдает ошибку уже на этапе окончательной линковки:c++ -Wl,-rpath,/usr/local/lib -Wl,-rpath,/usr/X11R6/lib -lc_r -o client buttonWidget.o customEdit.o dataSocket.o initWidget.o j_zlib.o JlistView.o main.o menuTool.o myCombo.o printWindow.o serversocket.o winPrint.o xml_handler.o xml_impl.o xml_signal.o moc_buttonWidget.o moc_commonPrint.o moc_customEdit.o moc_datasocket.o moc_initWidget.o moc_menuTool.o moc_myCombo.o moc_serversocket.o moc_xml_handler.o -L/usr/local/lib -L/usr/X11R6/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm -lz
customEdit.o: In function `dateValidator::validate(QString&, int&) const':
customEdit.o(.text+0x4c0): undefined reference to `simpleDate::isValid(int, int, int)'
customEdit.o: In function `dateValidator::fixup(QString&) const':
customEdit.o(.text+0x8dc): undefined reference to `simpleDate::isValid(int, int, int)'
customEdit.o(.text+0x9b7): undefined reference to `simpleDate::currentDate()'
customEdit.o(.text+0x9f8): undefined reference to `simpleDate::toString(QString const&) const'
customEdit.o: In function `customEdit::setText(QString const&)':
customEdit.o(.text+0x1460): undefined reference to `simpleDate::fromString(QString const&, simpleDate::DateFormat)'
customEdit.o(.text+0x1486): undefined reference to `simpleDate::isValid()'
customEdit.o(.text+0x1492): undefined reference to `simpleDate::currentDate()'
customEdit.o(.text+0x14c7): undefined reference to `simpleDate::toString(simpleDate::DateFormat) const'
customEdit.o: In function `customEdit::text() const':
customEdit.o(.text+0x1682): undefined reference to `simpleDate::simpleDate(int, int, int)'
customEdit.o(.text+0x1756): undefined reference to `simpleDate::toString(simpleDate::DateFormat) const'
*** Error code 1Stop in /home/kdl/soft/jazz/client
Вроде не указана какая-нибудь библиотека. Как определить, чего нехватает?
>ошибку уже на этапе окончательной линковки:
>
>c++ -Wl,-rpath,/usr/local/lib -Wl,-rpath,/usr/X11R6/lib -lc_r -o client buttonWidget.o customEdit.o dataSocket.o
> initWidget.o j_zlib.o JlistView.o main.o menuTool.o
>myCombo.o printWindow.o serversocket.o winPrint.o xml_handler.o xml_impl.o
> xml_signal.o moc_buttonWidget.o moc_commonPrint.o moc_customEdit.o moc_datasocket.o moc_initWidget.o
> moc_menuTool.o moc_myCombo.o moc_serversocket.o moc_xml_handler.o -L/usr/local/lib
>-L/usr/X11R6/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm -lz
>customEdit.o: In function `dateValidator::validate(QString&, int&) const':
>customEdit.o(.text+0x4c0): undefined reference to `simpleDate::isValid(int, int, int)'
>customEdit.o: In function `dateValidator::fixup(QString&) const':
>customEdit.o(.text+0x8dc): undefined reference to `simpleDate::isValid(int, int, int)'
>customEdit.o(.text+0x9b7): undefined reference to `simpleDate::currentDate()'
>customEdit.o(.text+0x9f8): undefined reference to `simpleDate::toString(QString const&) const'
>customEdit.o: In function `customEdit::setText(QString const&)':
>customEdit.o(.text+0x1460): undefined reference to `simpleDate::fromString(QString const&, simpleDate::DateFormat)'
>customEdit.o(.text+0x1486): undefined reference to `simpleDate::isValid()'
>customEdit.o(.text+0x1492): undefined reference to `simpleDate::currentDate()'
>customEdit.o(.text+0x14c7): undefined reference to `simpleDate::toString(simpleDate::DateFormat) const'
>customEdit.o: In function `customEdit::text() const':
>customEdit.o(.text+0x1682): undefined reference to `simpleDate::simpleDate(int, int, int)'
>customEdit.o(.text+0x1756): undefined reference to `simpleDate::toString(simpleDate::DateFormat) const'
>*** Error code 1
>
>Stop in /home/kdl/soft/jazz/client
>
>Вроде не указана какая-нибудь библиотека. Как определить, чего нехватает?
Забыли в состав проекта включить файлы simpleDate.cpp и simpleDate.h. Включил - вроде все откомпиолировалось и даже заработало. Большое спасибо.