EnglishУкраїнськаmRussian
Login/New
Topic with many replies

[BugWrong] Ошибка компиляции с -std=c++11


| 1 | 2 | Last
Author Message
Written on: 17. 11. 2017 [14:12]
aleax
Alexey Bondarchuk
Topic creator
registered since: 27.01.2010
Posts: 73
Если собирать с Qt5 (пробовал обе LTS версии 5.6 и 5.9.1) требуется указывать флаг -std=c++11:
JAVASCRIPT
./configure --prefix=$HOME/apps/openscada09qt56 --with-qt5=yes PKG_CONFIG_PATH=$HOME/apps/Qt/5.6/gcc_64/lib/pkgconfig Qt5Widgets_CFLAGS='-std=c++11'

Что в свою очередь при сборке компилятором gcc версии 5.4 приводит к следующей ошибке компиляции:

libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../../../src -std=c++11 -I/home/aleax/apps/Qt/5.6/gcc_64/include/QtPrintSupport -I/home/aleax/apps/Qt/5.6/gcc_64/include -I/home/aleax/apps/Qt/5.6/gcc_64/include/QtWidgets -I/home/aleax/apps/Qt/5.6/gcc_64/include -I/home/aleax/apps/Qt/5.6/gcc_64/include/QtGui -I/home/aleax/apps/Qt/5.6/gcc_64/include -I/home/aleax/apps/Qt/5.6/gcc_64/include/QtCore -I/home/aleax/apps/Qt/5.6/gcc_64/include -g -O2 -MT ui_Vision_la-vis_shapes.lo -MD -MP -MF .deps/ui_Vision_la-vis_shapes.Tpo -c vis_shapes.cpp -fPIC -DPIC -o .libs/ui_Vision_la-vis_shapes.o
vis_shapes.cpp: In member function ‘void VISION::ShapeDiagram::makeTrendsPicture(VISION::WdgView*)’:
vis_shapes.cpp:3283:17: error: ‘isnan’ was not declared in this scope
if(isnan(curVl)) curVl = EVAL_REAL;
^
vis_shapes.cpp:3283:17: note: suggested alternative:
In file included from /usr/include/c++/5/random:38:0,
from /usr/include/c++/5/bits/stl_algo.h:66,
from /usr/include/c++/5/algorithm:62,
from vis_shapes.cpp:27:
/usr/include/c++/5/cmath:641:5: note: ‘std::isnan’
isnan(_Tp __x)
^
vis_shapes.cpp: In member function ‘void VISION::ShapeDiagram::TrendObj::loadTrendsData(bool)’:
vis_shapes.cpp:3685:127: error: ‘isinf’ was not declared in this scope
vis_shapes.cpp:3685:127: note: suggested alternative:
In file included from /usr/include/c++/5/random:38:0,
from /usr/include/c++/5/bits/stl_algo.h:66,
from /usr/include/c++/5/algorithm:62,
from vis_shapes.cpp:27:
/usr/include/c++/5/cmath:621:5: note: ‘std::isinf’
isinf(_Tp __x)
^
vis_shapes.cpp:3784:88: error: ‘isinf’ was not declared in this scope
vis_shapes.cpp:3784:88: note: suggested alternative:
In file included from /usr/include/c++/5/random:38:0,
from /usr/include/c++/5/bits/stl_algo.h:66,
from /usr/include/c++/5/algorithm:62,
from vis_shapes.cpp:27:
/usr/include/c++/5/cmath:621:5: note: ‘std::isinf’
isinf(_Tp __x)
^
Makefile:606: спроба виконання рецепта для мети «ui_Vision_la-vis_shapes.lo» зазнала невдачі
make: *** [ui_Vision_la-vis_shapes.lo] Помилка 1


решается указанием неймспейса std:
JAVASCRIPT
diff --git a/src/moduls/ui/Vision/vis_shapes.cpp b/src/moduls/ui/Vision/vis_shapes.cpp
index 0748c4d..585c066 100644
--- a/src/moduls/ui/Vision/vis_shapes.cpp
+++ b/src/moduls/ui/Vision/vis_shapes.cpp
@@ -3280,7 +3280,7 @@ void ShapeDiagram::makeTrendsPicture( WdgView *w )
                curTm = vmin(aVend,vmax(aVbeg,cP.val()[a_pos].tm));
                curVl = cP.val()[a_pos].val;
                if(vsPercT && curVl != EVAL_REAL) curVl = 100*(curVl-bordL)/(bordU-bordL);
-               if(isnan(curVl)) curVl = EVAL_REAL;
+               if(std::isnan(curVl)) curVl = EVAL_REAL;
                curPos = tAr.x()+tAr.width()*(curTm-tBeg)/(tPict-tBeg);
            } else curPos = 0;
            if(!curPos || cP.val()[a_pos].tm >= aVend) end_vl = true;
@@ -3682,7 +3682,7 @@ void ShapeDiagram::TrendObj::loadTrendsData( bool full )
                    valEnd_ = (valEnd()/wantPer)*wantPer;
            if(lstTm && lstTm >= valEnd_) {
                double curVal = (req.text() == EVAL_STR) ? EVAL_REAL : s2r(req.text());
-               if((val_tp == TFld::Boolean && curVal == EVAL_BOOL) || (val_tp == TFld::Integer && curVal == EVAL_INT) || isinf(curVal))
+               if((val_tp == TFld::Boolean && curVal == EVAL_BOOL) || (val_tp == TFld::Integer && curVal == EVAL_INT) || std::isinf(curVal))
                    curVal = EVAL_REAL;
                if(valEnd_ && (lstTm-valEnd_)/vmax(wantPer,trcPer) > 2) vals.push_back(SHg(lstTm-trcPer,EVAL_REAL));
                else if((lstTm-valEnd_) >= wantPer) vals.push_back(SHg(lstTm,curVal));
@@ -3781,7 +3781,7 @@ void ShapeDiagram::TrendObj::loadTrendsData( bool full )
            curPos = s2i(TSYS::strParse(svl,0," ",&var_off,true));
            curVal = s2r((curValS=TSYS::strParse(svl,0," ",&var_off,true)));
            if(curValS == EVAL_STR || (val_tp == TFld::Boolean && curVal == EVAL_BOOL) ||
-                                     (val_tp == TFld::Integer && curVal == EVAL_INT) || isinf(curVal))
+                                     (val_tp == TFld::Integer && curVal == EVAL_INT) || std::isinf(curVal))
                curVal = EVAL_REAL;
        }
        else curPos = maxPos+1;



P.S.: Обнаружил что в одном из рабочих проектов, в интерфейсе Vision, при переходе с главного кадра на другую страницу происходит падение скады. Сборка с Qt5.9.1 падает, а с Qt5.6 нет. Буду дальше искать в чем дело.
Written on: 17. 11. 2017 [14:54]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3742
"aleax" wrote:

Если собирать с Qt5 (пробовал обе LTS версии 5.6 и 5.9.1) требуется указывать флаг -std=c++11:

Да, требуется, только нужно их собирать компилятором у которого это уже по умолчанию или достаточно прямо и где ничего подобного нет!
Смотрим сборку для Android: http://oscada.org/wiki/Sub-projects/Adaption_to_Android

Т.е. здесь нет ошибок OpenSCADA!

"aleax" wrote:

P.S.: Обнаружил что в одном из рабочих проектов, в интерфейсе Vision, при переходе с главного кадра на другую страницу происходит падение скады. Сборка с Qt5.9.1 падает, а с Qt5.6 нет. Буду дальше искать в чем дело.

На Android у меня ничего не падает, кроме того при сборке с последними Qt5 крайне желательно использовать параметр конфигурации сборки --enable-QtMainThrd !

Learn, learn and learn better than work, work and work.
Written on: 17. 11. 2017 [15:58]
aleax
Alexey Bondarchuk
Topic creator
registered since: 27.01.2010
Posts: 73
"roman" wrote:

Да, требуется, только нужно их собирать компилятором у которого это уже по умолчанию или достаточно прямо и где ничего подобного нет!
Смотрим сборку для Android: http://oscada.org/wiki/Sub-projects/Adaption_to_Android

Т.е. здесь нет ошибок OpenSCADA!


ОК, буду дальше изучать вопрос.
Посмотрел в документации http://oscada.org/wiki/Sub-projects/Adaption_to_Android, там явно указывается флаг c++11 при подготовке сборочной среды:
JAVASCRIPT
export CXXFLAGS="$CFLAGS -std=c++11 -I$NDK_PATH/sources/cxx-stl/gnu-libstdc++/$TARGET_V/include\


"roman" wrote:

На Android у меня ничего не падает, кроме того при сборке с последними Qt5 крайне желательно использовать параметр конфигурации сборки --enable-QtMainThrd !

Собираю и тестирую под десктоп линукс. Пока изучаю coredump.
Written on: 18. 11. 2017 [00:14]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3742
"aleax" wrote:

ОК, буду дальше изучать вопрос.
Посмотрел в документации http://oscada.org/wiki/Sub-projects/Adaption_to_Android, там явно указывается флаг c++11 при подготовке сборочной среды:

Да, и компиляторы там "прямы" и не теряют стандартных математических функций C.

"aleax" wrote:

"roman" wrote:

На Android у меня ничего не падает, кроме того при сборке с последними Qt5 крайне желательно использовать параметр конфигурации сборки --enable-QtMainThrd !

Собираю и тестирую под десктоп линукс. Пока изучаю coredump.

Не падало. Собственно там есть проблема с видом "Текст" примитива элементов формы на отдельном окне, что приводит к падению, но везде и независимо от Qt.
Это исправил.

В остальном, на Debian 9, GCC 6.3, Qt5.7.1, GLibC 2.24 проблем нет и я думаю, что переключу сборки для него на Qt5, поскольку стиль Qt5 там уже приемлем и будет вариант поглядеть на Qt5 на живом диске.

Learn, learn and learn better than work, work and work.
Written on: 20. 11. 2017 [09:43]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3742
"roman" wrote:

В остальном, на Debian 9, GCC 6.3, Qt5.7.1, GLibC 2.24 проблем нет и я думаю, что переключу сборки для него на Qt5, поскольку стиль Qt5 там уже приемлем и будет вариант поглядеть на Qt5 на живом диске.

Переключил, теперь все сборки для Debian9 используют Qt5!

Learn, learn and learn better than work, work and work.
Written on: 23. 11. 2017 [08:06]
Megavoltik
Игорь Гапша
registered since: 20.11.2017
Posts: 4
"roman" wrote:

"roman" wrote:

В остальном, на Debian 9, GCC 6.3, Qt5.7.1, GLibC 2.24 проблем нет и я думаю, что переключу сборки для него на Qt5, поскольку стиль Qt5 там уже приемлем и будет вариант поглядеть на Qt5 на живом диске.

Переключил, теперь все сборки для Debian9 используют Qt5!


Добрый день. Подниму тему. Есть проблема на Debian 9, GCC 6.3.0, Qt 5.7.1. В Рабочем пользовательском интерфейсе при попытке редактирования атрибутов элемента к примеру "Геометрия" курсор убегает вверх и отредактировать их невозможно. На Qt 4 и r2516-1 таких проблем не было. Появились только после моего обновления вчера на r2522-2. Причем на двух машинах сразу. С чем это может быть связано и как исправить?.

Да, Debian 9.1.

[This article was edited 2 times, at last 23.11.2017 at 08:13.]
Written on: 23. 11. 2017 [08:42]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3742
"Megavoltik" wrote:

"roman" wrote:

Переключил, теперь все сборки для Debian9 используют Qt5!

Добрый день. Подниму тему. Есть проблема на Debian 9, GCC 6.3.0, Qt 5.7.1. В Рабочем пользовательском интерфейсе при попытке редактирования атрибутов элемента к примеру "Геометрия" курсор убегает вверх и отредактировать их невозможно. На Qt 4 и r2516-1 таких проблем не было. Появились только после моего обновления вчера на r2522-2. Причем на двух машинах сразу. С чем это может быть связано и как исправить?.

Да, есть такое, в смысле невозможности даже выбрать элемент в дереве глубиной более первого уровня.
Только это не проблема OpenSCADA поскольку она никак выбором элементов не управляет, а только принимает сигналы по выбору.

Кроме того на Qt5.3 такого не замечалось, сегодня ещё погляжу на 5.9, на Android.

Learn, learn and learn better than work, work and work.
Written on: 23. 11. 2017 [08:56]
Megavoltik
Игорь Гапша
registered since: 20.11.2017
Posts: 4
"roman" wrote:

"Megavoltik" wrote:

"roman" wrote:

Переключил, теперь все сборки для Debian9 используют Qt5!

Добрый день. Подниму тему. Есть проблема на Debian 9, GCC 6.3.0, Qt 5.7.1. В Рабочем пользовательском интерфейсе при попытке редактирования атрибутов элемента к примеру "Геометрия" курсор убегает вверх и отредактировать их невозможно. На Qt 4 и r2516-1 таких проблем не было. Появились только после моего обновления вчера на r2522-2. Причем на двух машинах сразу. С чем это может быть связано и как исправить?.

Да, есть такое, в смысле невозможности даже выбрать элемент в дереве глубиной более первого уровня.
Только это не проблема OpenSCADA поскольку она никак выбором элементов не управляет, а только принимает сигналы по выбору.

Кроме того на Qt5.3 такого не замечалось, сегодня ещё погляжу на 5.9, на Android.


Даже больше скажу: на Qt 5.5.1 такого на замечалось. Спасибо

Может тогда вернуть пока на Qt4?

[This article was edited 1 times, at last 23.11.2017 at 09:00.]
Written on: 24. 11. 2017 [10:16]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3742
"Megavoltik" wrote:

"roman" wrote:

Кроме того на Qt5.3 такого не замечалось, сегодня ещё погляжу на 5.9, на Android.


Точнее там у меня сейчас 5.8 и на нём эта проблема есть.

"Megavoltik" wrote:

Даже больше скажу: на Qt 5.5.1 такого на замечалось. Спасибо
Может тогда вернуть пока на Qt4?

Пусть побудет, я в ближайшее время добавлю менеджер проектов прямо в UI.QTStarter, после чего ближе рассмотрю эту проблему и другие с Qt на Android.

Learn, learn and learn better than work, work and work.
Written on: 24. 11. 2017 [13:07]
Megavoltik
Игорь Гапша
registered since: 20.11.2017
Posts: 4
"roman" wrote:

Точнее там у меня сейчас 5.8 и на нём эта проблема есть.

На Qt 5.9.3 та же беда. Сегодня попробовал. Короче все что выше 5.3 - неработоспособно. Может тогда в зависимостях не >=5.7.0, а >=5.3 поставить? Хоть дописать смогу тест...

"roman" wrote:

Пусть побудет, я в ближайшее время добавлю менеджер проектов прямо в UI.QTStarter, после чего ближе рассмотрю эту проблему и другие с Qt на Android.

ОК



[This article was edited 1 times, at last 24.11.2017 at 13:08.]
| 1 | 2 | Last



9794