Форум программистов, компьютерный форум, киберфорум
Наши страницы
С под Linux
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.55/38: Рейтинг темы: голосов - 38, средняя оценка - 4.55
#pragma
Временно недоступен
956 / 227 / 14
Регистрация: 12.04.2009
Сообщений: 926
1

Можно ли как-то указать в Makefile, чтобы часть файлов компилировал компилятор C?

05.11.2009, 12:19. Просмотров 7011. Ответов 41

Я пробую программу Qt 4 Designer,и после всех настроек файла .ui я скопировал себе код интерфейса в программу,но она не компилируется- пишет,что стандарт C++ не поддерживает тип long long и указывает на один из typedef-ов в самой библиотеке.Вроде написано,что библиотека писалась на С++,я не понимаю,как так.Как можно выйти из положения,может,просто скомпилировать именно эти файлы компилятором Си? Или не получится?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2009, 12:19
Ответы с готовыми решениями:

Как можно определить переменную в файле configure.in,чтобы её можно было использовать в Makefile?
Ситуация такая - В проекте конфигуратор программы используется только для проверок на наличие...

Как указать полный путь к компилятору сс в Makefile?
Такая ситуация: компилятор сс, компилятор находится не там где прописано в переменной PATH. Как...

Как послать письмо из VB, так чтобы можно было вручную указать мыло отправителя?
Как послать письмо из VB, так чтобы можно было вручную указать мыло отправителя?

Можно ли как то в Embarcadero RAD Studio XE6 указать структуру файлов скомпилированого проекта
Доброго времени суток. Уважаемые знатоки, вопрос: Можно ли как то в Embarcadero RAD Studio XE6...

Как правильно указать путь к файлу Word-шаблону чтобы проект можно было запускать с других компьютеров?
Подскажите пожалуйста!!! Как правильно указать путь к файлу Word-шаблону(по которому строится отчет...

41
odip
Эксперт С++
7169 / 3227 / 77
Регистрация: 17.06.2009
Сообщений: 14,166
05.11.2009, 19:39 2
Выложи полное сообщение об ошибке.

Qt 4 Designer - это ты пример к себе скопировал пробуешь ? А сам по себе пример собирается ?
1
#pragma
Временно недоступен
956 / 227 / 14
Регистрация: 12.04.2009
Сообщений: 926
06.11.2009, 00:11  [ТС] 3
Код
/usr/include/qt4/QtCore/qglobal.h|795|error: ISO C++ 1998 does not support ‘long long’|
Пытался я скомпилировать то,что получается в результате правок файла .ui через графическую программу Qt4 Designer.Там есть такая функция "Посмотреть код".Вот этот код я попробовал встроить в программу,но ещё до того,как успел добавить или убрать что-либо,получил эту ошибку.
На второй вопрос : это всего лишь класс в .h файле.
0
niXman
Эксперт С++
3206 / 1455 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
06.11.2009, 07:39 4
#pragma, Версия компилятора? Походу он древний
п.с.
впервые такое сообщение вижу)
1
06.11.2009, 07:39
odip
Эксперт С++
7169 / 3227 / 77
Регистрация: 17.06.2009
Сообщений: 14,166
06.11.2009, 21:42 5
Скорее всего неправильное использование Qt.
Qt нужно использовать совместо либо с Visual Studio 2003/2005/2008.
Либо брать Qt SDK и там свой компилятор - mingw gcc.
С другими компиляторами не факт что будет работать.
1
RazorQ
585 / 352 / 15
Регистрация: 06.02.2009
Сообщений: 1,386
06.11.2009, 21:48 6
#pragma, в Qt есть свой тип qlonglong.
1
niXman
Эксперт С++
3206 / 1455 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
07.11.2009, 00:26 7
Цитата Сообщение от RazorQ Посмотреть сообщение
в Qt есть свой тип qlonglong
Еще quint64 есть)
1
#pragma
Временно недоступен
956 / 227 / 14
Регистрация: 12.04.2009
Сообщений: 926
07.11.2009, 03:50  [ТС] 8
Цитата Сообщение от niXman Посмотреть сообщение
#pragma, Версия компилятора? Походу он древний
п.с.
впервые такое сообщение вижу)
gcc version 4.3.3 да вроде не совсем и древний
Цитата Сообщение от odip Посмотреть сообщение
Скорее всего неправильное использование Qt.
Qt нужно использовать совместо либо с Visual Studio 2003/2005/2008.
Либо брать Qt SDK и там свой компилятор - mingw gcc.
С другими компиляторами не факт что будет работать.
А как же все программы для KDE компилируются?Странно всё это,написано что C++,но какой-то нестандартный C++.
Тогда в топку Qt
0
niXman
Эксперт С++
3206 / 1455 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
07.11.2009, 04:03 9
Цитата Сообщение от #pragma Посмотреть сообщение
gcc version 4.3.3
Да, не старый. Что-то ты в опциях намутил


Цитата Сообщение от odip Посмотреть сообщение
Скорее всего неправильное использование Qt.
Скорее..


Цитата Сообщение от odip Посмотреть сообщение
Qt нужно использовать совместо либо с Visual Studio 2003/2005/2008.
Это последнее что бы я сделал. И другим рекомендовать бы не стал.


Цитата Сообщение от odip Посмотреть сообщение
Либо брать Qt SDK и там свой компилятор - mingw gcc.
Это только в версии для виндавз поставляется еще и компилятор. Для линуха этого не нужно, там и так превосходный компилятор является компилятором по умолчанию


Цитата Сообщение от odip Посмотреть сообщение
С другими компиляторами не факт что будет работать.
Что курил?
Идем в каталог $(QTDIR)\mkspecs и смотрим список(имя каталога - это имя платформы/ОС/компилятора). Я уверен что их там больше чем ты хотя бы слышал


Цитата Сообщение от #pragma Посмотреть сообщение
А как же все программы для KDE компилируются?
Это же очевидно. В линух ставится микрософтовский компилятор, и им все компилируют(и ядро тоже). После этого, создают дистрибутив из получившихся бинарников, следы же микрософтовского компилятора, заметают дабы не застыдили. Ой, забыл про бинарную несовместимость Тогда все равно не понимаю, как же линух и все программы в ней компилируют (прикольно получилось)

Цитата Сообщение от #pragma Посмотреть сообщение
Странно всё это,написано что C++,но какой-то нестандартный C++.
Сам ты нестандартный.

Цитата Сообщение от #pragma Посмотреть сообщение
Тогда в топку Qt
Тебя в топку.
1
#pragma
Временно недоступен
956 / 227 / 14
Регистрация: 12.04.2009
Сообщений: 926
07.11.2009, 04:06  [ТС] 10
niXman, по существу помочь можешь?
0
niXman
Эксперт С++
3206 / 1455 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
07.11.2009, 04:08 11
Цитата Сообщение от #pragma Посмотреть сообщение
по существу помочь можешь?
Я не понял что требуется.
0
#pragma
Временно недоступен
956 / 227 / 14
Регистрация: 12.04.2009
Сообщений: 926
07.11.2009, 04:19  [ТС] 12
Ничего не "требуется",но если ты знаешь ответ на вопрос,почему не компилируется программа и выдаёт именно эту ошибку,пожалуйста,скажи.
0
niXman
Эксперт С++
3206 / 1455 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
07.11.2009, 04:25 13
покажи код

Добавлено через 25 секунд
т.е. ту единицу трансляции в которой вываливается ошибка.
1
#pragma
Временно недоступен
956 / 227 / 14
Регистрация: 12.04.2009
Сообщений: 926
07.11.2009, 04:26  [ТС] 14
Код,сгенерированный Qt4 Designer.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#ifndef QTGUI_H_INCLUDED
#define QTGUI_H_INCLUDED
/********************************************************************************
** Form generated from reading ui file 'basinT23774.ui'
**
** Created: Wed Nov 4 00:09:05 2009
**      by: Qt User Interface Compiler version 4.5.0
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/
 
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDockWidget>
#include <QtGui/QHeaderView>
#include <QtGui/QMainWindow>
#include <QtGui/QMenu>
#include <QtGui/QMenuBar>
#include <QtGui/QPushButton>
#include <QtGui/QTextEdit>
#include <QtGui/QWidget>
 
QT_BEGIN_NAMESPACE
 
class Ui_MainWindow
{
public:
    QAction *actionOpen_2;
    QAction *actionSave_2;
    QAction *actionClose;
    QAction *actionOpen;
    QAction *actionSave;
    QWidget *centralwidget;
    QPushButton *pushButton;
    QDockWidget *dockWidget;
    QWidget *dockWidgetContents;
    QTextEdit *textEdit;
    QMenuBar *menuBar;
    QMenu *menuFile;
    QMenu *menuRun;
 
    void setupUi(QMainWindow *MainWindow)
    {
        if (MainWindow->objectName().isEmpty())
            MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
        MainWindow->setWindowModality(Qt::WindowModal);
        MainWindow->setEnabled(true);
        MainWindow->resize(834, 646);
        QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
        sizePolicy.setHorizontalStretch(0);
        sizePolicy.setVerticalStretch(0);
        sizePolicy.setHeightForWidth(MainWindow->sizePolicy().hasHeightForWidth());
        MainWindow->setSizePolicy(sizePolicy);
        MainWindow->setContextMenuPolicy(Qt::ActionsContextMenu);
        MainWindow->setAcceptDrops(true);
        QIcon icon;
        icon.addPixmap(QPixmap(QString::fromUtf8("basin_icons/2.png")), QIcon::Normal, QIcon::Off);
        MainWindow->setWindowIcon(icon);
        MainWindow->setLayoutDirection(Qt::LeftToRight);
        MainWindow->setAutoFillBackground(false);
        MainWindow->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
        MainWindow->setAnimated(true);
        MainWindow->setDocumentMode(false);
        MainWindow->setTabShape(QTabWidget::Rounded);
        MainWindow->setDockNestingEnabled(true);
        MainWindow->setUnifiedTitleAndToolBarOnMac(true);
        actionOpen_2 = new QAction(MainWindow);
        actionOpen_2->setObjectName(QString::fromUtf8("actionOpen_2"));
        QIcon icon1;
        icon1.addPixmap(QPixmap(QString::fromUtf8("Azenis Icons/scalable/actions/filenew.png")), QIcon::Normal, QIcon::Off);
        actionOpen_2->setIcon(icon1);
        actionSave_2 = new QAction(MainWindow);
        actionSave_2->setObjectName(QString::fromUtf8("actionSave_2"));
        QIcon icon2;
        icon2.addPixmap(QPixmap(QString::fromUtf8("Azenis Icons/scalable/actions/document-save.png")), QIcon::Normal, QIcon::Off);
        actionSave_2->setIcon(icon2);
        actionClose = new QAction(MainWindow);
        actionClose->setObjectName(QString::fromUtf8("actionClose"));
        QIcon icon3;
        icon3.addPixmap(QPixmap(QString::fromUtf8("Azenis Icons/scalable/actions/gtk-close.png")), QIcon::Normal, QIcon::Off);
        actionClose->setIcon(icon3);
        actionOpen = new QAction(MainWindow);
        actionOpen->setObjectName(QString::fromUtf8("actionOpen"));
        actionSave = new QAction(MainWindow);
        actionSave->setObjectName(QString::fromUtf8("actionSave"));
        centralwidget = new QWidget(MainWindow);
        centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
        centralwidget->setEnabled(true);
        centralwidget->setAutoFillBackground(false);
        pushButton = new QPushButton(centralwidget);
        pushButton->setObjectName(QString::fromUtf8("pushButton"));
        pushButton->setGeometry(QRect(10, 20, 81, 51));
        QIcon icon4;
        icon4.addPixmap(QPixmap(QString::fromUtf8(":/img/icons/png_256x256/filemedia.png")), QIcon::Normal, QIcon::Off);
        pushButton->setIcon(icon4);
        pushButton->setIconSize(QSize(36, 36));
        MainWindow->setCentralWidget(centralwidget);
        dockWidget = new QDockWidget(MainWindow);
        dockWidget->setObjectName(QString::fromUtf8("dockWidget"));
        dockWidget->setMinimumSize(QSize(718, 41));
        dockWidget->setMaximumSize(QSize(718, 524287));
        dockWidget->setLayoutDirection(Qt::LeftToRight);
        dockWidgetContents = new QWidget();
        dockWidgetContents->setObjectName(QString::fromUtf8("dockWidgetContents"));
        textEdit = new QTextEdit(dockWidgetContents);
        textEdit->setObjectName(QString::fromUtf8("textEdit"));
        textEdit->setGeometry(QRect(0, 0, 711, 599));
        textEdit->setMaximumSize(QSize(711, 16777215));
        textEdit->setAutoFillBackground(false);
        textEdit->setLineWrapColumnOrWidth(80);
        dockWidget->setWidget(dockWidgetContents);
        MainWindow->addDockWidget(static_cast<Qt::DockWidgetArea>(1), dockWidget);
        menuBar = new QMenuBar(MainWindow);
        menuBar->setObjectName(QString::fromUtf8("menuBar"));
        menuBar->setGeometry(QRect(0, 0, 834, 25));
        menuFile = new QMenu(menuBar);
        menuFile->setObjectName(QString::fromUtf8("menuFile"));
        menuRun = new QMenu(menuBar);
        menuRun->setObjectName(QString::fromUtf8("menuRun"));
        MainWindow->setMenuBar(menuBar);
 
        menuBar->addAction(menuFile->menuAction());
        menuBar->addAction(menuRun->menuAction());
        menuFile->addAction(actionOpen);
        menuFile->addAction(actionSave);
 
        retranslateUi(MainWindow);
 
        QMetaObject::connectSlotsByName(MainWindow);
    } // setupUi
 
    void retranslateUi(QMainWindow *MainWindow)
    {
        MainWindow->setWindowTitle(QApplication::translate("MainWindow", "Basin", 0, QApplication::UnicodeUTF8));
        actionOpen_2->setText(QApplication::translate("MainWindow", "Open...", 0, QApplication::UnicodeUTF8));
        actionSave_2->setText(QApplication::translate("MainWindow", "Save", 0, QApplication::UnicodeUTF8));
        actionClose->setText(QApplication::translate("MainWindow", "Close", 0, QApplication::UnicodeUTF8));
        actionOpen->setText(QApplication::translate("MainWindow", "Open...", 0, QApplication::UnicodeUTF8));
        actionSave->setText(QApplication::translate("MainWindow", "Save", 0, QApplication::UnicodeUTF8));
        centralwidget->setStyleSheet(QString());
        pushButton->setText(QApplication::translate("MainWindow", "Run", 0, QApplication::UnicodeUTF8));
        menuFile->setTitle(QApplication::translate("MainWindow", "File", 0, QApplication::UnicodeUTF8));
        menuRun->setTitle(QApplication::translate("MainWindow", "Run", 0, QApplication::UnicodeUTF8));
    } // retranslateUi
 
};
 
namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui
 
QT_END_NAMESPACE
 
 
#endif // QTGUI_H_INCLUDED

А вот вырезка и файла,в котором указывается ошибка(точный путь и название см. выше),думаю,весь файл приводить не имеет смысла.
qglobal.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
 
/*
   Size-dependent types (architechture-dependent byte order)
 
   Make sure to update QMetaType when changing these typedefs
*/
 
typedef signed char qint8;         /* 8 bit signed */
typedef unsigned char quint8;      /* 8 bit unsigned */
typedef short qint16;              /* 16 bit signed */
typedef unsigned short quint16;    /* 16 bit unsigned */
typedef int qint32;                /* 32 bit signed */
typedef unsigned int quint32;      /* 32 bit unsigned */
#if defined(Q_OS_WIN) && !defined(Q_CC_GNU)
#  define Q_INT64_C(c) c ## i64    /* signed 64 bit constant */
#  define Q_UINT64_C(c) c ## ui64   /* unsigned 64 bit constant */
typedef __int64 qint64;            /* 64 bit signed */
typedef unsigned __int64 quint64;  /* 64 bit unsigned */
#else
#  define Q_INT64_C(c) static_cast<long long>(c ## LL)     /* signed 64 bit constant */
#  define Q_UINT64_C(c) static_cast<unsigned long long>(c ## ULL) /* unsigned 64 bit constant */
typedef long long qint64;           /* 64 bit signed */
typedef unsigned long long quint64; /* 64 bit unsigned */
#endif
 
typedef qint64 qlonglong;
typedef quint64 qulonglong;
 
#ifndef QT_POINTER_SIZE
#  if defined(Q_OS_WIN64)
#   define QT_POINTER_SIZE 8
#  elif defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
#   define QT_POINTER_SIZE 4
#  endif
#endif

Здесь строка 25 соответствует строке 795 в оригинальном файле.
0
niXman
Эксперт С++
3206 / 1455 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
07.11.2009, 04:55 15
Узнаешь?
http://pic.ipicture.ru/uploads/091107/thumbs/3lXh4y5xKF.png

Ни строки кода я не изменил.
Проверил в Mingw-4.4.1, MSVC-2008.

Добавлено через 2 минуты
Версия Qt ?
Откуда скачал?
Каким компилятором собирал?
1
#pragma
Временно недоступен
956 / 227 / 14
Регистрация: 12.04.2009
Сообщений: 926
07.11.2009, 06:16  [ТС] 16
Да,странно.Это именно тот тестовый интерфейс,который я пытался собрать.Попробовал просто в исходнике объявить переменную типа long long - без какой-либо связи с библиотеками - выдаёт ту же ошибку.Вообще,стандарт то этот тип поддерживает?
Вот вывод команды g++ -v
Код
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.3.3-5ubuntu4' --with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.3 --program-suffix=-4.3 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --enable-targets=all --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.3.3 (Ubuntu 4.3.3-5ubuntu4)
Qt4 номер версии 4.5.0
0
niXman
Эксперт С++
3206 / 1455 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
07.11.2009, 06:28 17
Цитата Сообщение от #pragma Посмотреть сообщение
Вообще,стандарт то этот тип поддерживает?
Конечно, начиная еще с расширения С99
several new data types, including long long int
т.е. уже лет десять)

покажи вывод
gcc -v
C
1
2
3
4
int main() {
   printf("GNU C version = %d.%d\n", __GNUC__, __GNUC_MINOR__);
   return 0;
}
1
#pragma
Временно недоступен
956 / 227 / 14
Регистрация: 12.04.2009
Сообщений: 926
07.11.2009, 07:01  [ТС] 18
Вывод первой команды:
Код
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.3.3-5ubuntu4' --with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.3 --program-suffix=-4.3 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --enable-targets=all --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.3.3 (Ubuntu 4.3.3-5ubuntu4)
Вывод программы:
Код
GNU C version = 4.3
0
niXman
Эксперт С++
3206 / 1455 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
07.11.2009, 07:05 19
А такой код скомпилиться?
C
1
2
3
4
int main() {
   long long v = 0ll;
   return 0;
}
1
#pragma
Временно недоступен
956 / 227 / 14
Регистрация: 12.04.2009
Сообщений: 926
07.11.2009, 07:11  [ТС] 20
Я кажется понял,почему не компилилось.В компиляторе есть такая опция:
Код
Enable warnings demanded by strict ISO C and ISO C++ [-pedantic]
Вот после её выключения программа компилируется.Получается,что Qt4 не соответствует стандарту ISO C++
Цитата Сообщение от niXman Посмотреть сообщение
А такой код скомпилиться?
C
1
2
3
4
int main() {
   long long v = 0ll;
   return 0;
}
С этой опцией -нет.
0
07.11.2009, 07:11
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2009, 07:11

Можно ли как нибудь явно указать тип переменной, чтобы ИДЕ рассказала мне все что я хочу знать об объекте?
Можно как нибудь указать тип, но не через оператор new...

Как в этом Makefile указать опцию для сбора информации для дебагинга?
SDK_PATH:=$(shell pwd)/../../ARDroneLib PC_TARGET=yes USE_LINUX=yes ifdef MYKONOS include...

Как в makefile сделать чтобы проект собирался из директории src
Всем доброго времени суток, подскажите как мне в makefile сделать так чтобы проект собирался из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru