2 / 2 / 0
Регистрация: 24.05.2016
Сообщений: 88
|
||||||||||||||||||||||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||||||||||||||||||||||
Неожиданное завершение программы30.05.2019, 04:15. Показов 1311. Ответов 10
Доброй ночи уважаемые форумчане.
Собственно опишу всё попорядку. Перед тем как начну хотелось бы сказать, на С++ я практически и не писал никогда (потихоньку изучаю), поэтому не кидайте тапками. Использую Qt Creator 4.9.0 на основе Qt 5.12.2 под MSVC 2017 64bit. Начал писать программу для открытия формата *.shp и базы *.dbf. с помощью GDAL/OGR 2.3 , получения данных из формата и в будущем отрисовка (но это пока не важно). Какие - то простые реализации в один класс и точку входа у меня получались ( допустим семантику по объекту получить ), но вот с такой структурой ничего не выходит. Программа запускается и по qDebug() ложится в одном из двух больших методов. Вот структура проекта и код: include - configurationshape.h - mapview.h - openshapefile_and_get_data.h - point_x_y.h - shapeconf.h src: - configurationshape.cpp - main.cpp - mapview.cpp - openshapefile_and_get_data.cpp - point_x_y.cpp - shapeconf.cpp Собственно код: configurationshape.h
Заранее спасибо.
0
|
30.05.2019, 04:15 | |
Ответы с готовыми решениями:
10
Неожиданное завершение программы Неожиданное завершение работы программы Неожиданное завершение приложения Полное завершение программы |
223 / 188 / 97
Регистрация: 15.04.2018
Сообщений: 718
|
|
30.05.2019, 09:36 | 2 |
Aringot, пожалуйста, указывайте точку падения программы (выявите через дебаг), и, желательно, путь до этой точки (очередность операций до этого действия).
Возможно, когда вы будете дебажить вопрос решится сам собой
0
|
2 / 2 / 0
Регистрация: 24.05.2016
Сообщений: 88
|
||||||
30.05.2019, 12:40 [ТС] | 3 | |||||
Честно признаться, до этого момента у меня его не было, так как с Visual Studio он не поставляется, я просто подключал заголовок <QDebug> и смотрел когда программа упадёт и падала она тут:
openshapefile_and_get_data.cpp
Сейчас ставлю дебагер и буду проверять, но от коментариев по делу бы неотказался бы.
0
|
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 828
|
||||||
30.05.2019, 13:39 | 4 | |||||
Очевидно же, нет?
0
|
2 / 2 / 0
Регистрация: 24.05.2016
Сообщений: 88
|
|||||||||||
30.05.2019, 14:02 [ТС] | 5 | ||||||||||
Да, действительно, не инициализировал слой, а надо было
Который - GetGeometryPolygonFromShapefile Дебагерные вставки показали что проблема начинается перед вхождением в цикл
0
|
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 828
|
|
30.05.2019, 14:20 | 6 |
Теперь уже сложно по коду понять. По крайней мере нахрапом. По описанию проблемы - используемый объект где-то в другом потоке уничтожается. Если нет многопоточности, то я бы все же советовал дебажить каждый объект, проверять валидность, значения. Перечитать описание каждого используемого метода либы.
0
|
2 / 2 / 0
Регистрация: 24.05.2016
Сообщений: 88
|
||||||||||||||||||||||||||
30.05.2019, 15:11 [ТС] | 7 | |||||||||||||||||||||||||
Тогда лучше задам обобщённый вопрос по данному случаю.
Скажем у меня есть два класса, в одном я добавляю данные, другой является, например, контейнером. Ну и точка входа. Вот код примера: Пускай это будет контейнер
main.obj:-1: ошибка: LNK2019: ссылка на неразрешенный внешний символ "public: __cdecl num::num(void)" (??0num@@QEAA@XZ) в функции main main.obj:-1: ошибка: LNK2019: ссылка на неразрешенный внешний символ "public: __cdecl num::~num(void)" (??1num@@QEAA@XZ) в функции "public: void * __cdecl num::`scalar deleting destructor'(unsigned int)" (??_Gnum@@QEAAPEAXI@Z) По моей логике я описываю контейнер и класс с методами и создаю экземпляры этих классов в точке входа и передаю ссылку на мой объект - контейнер в экземляр класса с методами для добавления данных, а потом я уже хочу работать с этими данными. Сразу прошу прощения, может быть я что то неправильно понимаю, если да, то укажите на мой косяк. Пример выше это упрощённое изложение того кода что я прикладывал к вопросу темы.
0
|
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 828
|
||||||
30.05.2019, 15:33 | 8 | |||||
Я давненько так не писал, но рискну предположить:
1
|
2 / 2 / 0
Регистрация: 24.05.2016
Сообщений: 88
|
|||||||||||
30.05.2019, 16:06 [ТС] | 9 | ||||||||||
Горбаг, да, действительно, Ваше предположение оказалось верным, такая запись выполнилась:
0
|
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
|
||||||
30.05.2019, 17:49 | 10 | |||||
В С++ проще написать без typedef,
0
|
2 / 2 / 0
Регистрация: 24.05.2016
Сообщений: 88
|
|
31.05.2019, 02:30 [ТС] | 11 |
TRam_, а можно подробнее, что - бы учитывать этот момент в будущем?
0
|
31.05.2019, 02:30 | |
31.05.2019, 02:30 | |
Помогаю со студенческими работами здесь
11
Завершение программы из MainWindow Аварийное завершение программы. Сигналы Слоты Завершение текущей программы из запускаемого процесса Завершение программы,при закрытии формы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |