QtCreator vs CMD.exe, Разница в работе |
Здравствуйте, гость ( Вход | Регистрация )
QtCreator vs CMD.exe, Разница в работе |
JustOneQuestion |
7.5.2015, 11:20
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 13 Регистрация: 7.5.2015 Пользователь №: 4379 Спасибо сказали: 0 раз(а) Репутация: 0 |
Приветсвуйю людей знающих, опытных и отзывчивых.
С Qt впервые столкнулся после приобретения узко-специализированного устройста, библиотеки работы с которым были под Qt. С библиотеками шёл простой пример. Собственно одна папка с файлами *.c *.cpp *.h *.dll *.a, файлов .pro .lib и каких либо проектов нет. В reedme предлагалось запустить примемр через строку g++ file1.c file2.c file3.cpp -l:libUSTROYSTVO.a -o result.exe (я в ней названия поменял, для удобства. Main в file3.cpp находится если это важно) ОС Windows 8.1, скачал и поставил Qt 5.4.1 for Windows 32-bit (MinGW 4.9.1, 856 MB) ( www.qt.io/download-open-source/ ) И через Qt 5.4 for Desktop (MinGW 4.9 32 bit) (ярлык в "меню пуск".. в плитках) запустил (вроде как) аналог cmd.exe (с батником который переменные среды прописывает) и в нем (находясь в директории с файлами примера) использовал g++ file1.c file2.c file3.cpp -l:libUSTROYSTVO.a -o result.exe Всё хорошо, без ошибок, получился екзешник примера, который вполне себе работает как нужно. Но попробовав создать проект в QtCreator и добавить в него файлы примера, чтобы работать в IDE(мне так прривычнее... уж простите если это не по православному... я не в курсе был ), у меня на этапе сборки проекта вылезло множество ошибок. В качестве примера создания проекта я использовал Empty Qmake Project. Не важно, вобщем-то, что за ошибки вылезли, главное мне хотелось бы понять, почему и как исправить то, что через командную строку всё работает, а через QtProject нет(пока)? Как правильно создать проект, который бы точно также реагировал на код как и командная строка...? Всем, кто не поленился это прочитать, спасибо и всего вам хорошего. |
|
|
JustOneQuestion |
7.5.2015, 21:38
Сообщение
#2
|
Студент Группа: Новичок Сообщений: 13 Регистрация: 7.5.2015 Пользователь №: 4379 Спасибо сказали: 0 раз(а) Репутация: 0 |
Так, ну хорошо. По шагам тогда распишу.
QtCreartor->Новый проект->[Шаблон: Другой проект]EmptyQmakeProject =>KitSelection:Desktop Qt 5.4.1 MinGW 32bit [просто по умолчанию] . Больше ничего не добавляем не меняем и жмём ок. Далее ДеревоПроекта->Добавить существующие файлы. Добавляем пять *.h, два *.с и один *.cpp. (Main в последнем) Видим что файлы появились в дереве проекта. Далее добавляем библиотеку. Вообще-то в примере есть файлы и *.dll и *.а, но *.lib нет. Добавлять буду только *.a. ДеревоПроекта->Добавить существующую библиотеку->Внешняя->Платформа только Windows; Компановка: Динамическая; Галочку про суффикс убрал. В итоге имеем pro файл
Далее ставим выпуск вместо отладки. Сборка->запустить qmake. //Успешно без ошибок. Сборка->Собрать проект” ProjectTest” И вот тут возникает приличное кол-во ошибок. Где-то 20 варнингов и 20 ошибок. Варнинги типа сравнения инта с безнаковым, неиспользуемые переменные и прочее. А вот ошибки почти все однотипные. Цитата undefined reference to `SomeOneFunc(_dictionary_*, char const*, int)' more undefined references to ` SomeOneOtherFunc(_dictionary_*, char const*, int)' follow И в конце вот такое ещё есть Цитата C:/ProgramFiles/QtMinGW/Tools/mingw491_32/bin/../lib/gcc/i686-w64-mingw32/4.9.1/../../../../i686-w64-mingw32/bin/ld.exe: release/ FileMain.o: bad reloc address 0x14 in section `.text$_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_[__ZStplIcSt11char_trai tsIcESaIcEESbIT_T0_T1_ERKS6_S8_]' collect2.exe: error: ld returned 1 exit status mingw32-make[1]: *** [release\ProjectTest.exe] Error 1 mingw32-make: *** [release] Error 2 00:15:43: Процесс «C:\ProgramFiles\QtMinGW\Tools\mingw491_32\bin\mingw32-make.exe» завершился с кодом 2. Ошибка при сборке/установке проекта ProjectTest (комплект: Desktop Qt 5.4.1 MinGW 32bit) Во время выполнения этапа «Сборка» Функции в которых ошибки вообще-то не библиотечные, а те, что описаны в File1.c /.h Вот если честно, у меня подозрения на qmake –spec … По и дее там же добавляется много всего… , а вот что делает g++ в командной строке g++ file1.c file2.c file3.cpp -l:libUSTROYSTVO.a -o result.exe ? Использует ли он то же, что и в qmake или он вообще ничего не использует или своё что-то использует. В коде есть места типа
А вот SCTDCDLL_PUBLIC как раз таки используется в ашнике к библиотеке. НО! Я нигде не видел дефайна для _WIN32 или __CYGWIN__. А оно жеж должно где-то быть?! ) Причём и g++ и QtCreator должны знать про этот дефайн. … Значит у них есть какие-то дефайны и какие-то настройки по умолчанию. Может быть они различны? Может быть в это проблема? Последнее это просто предположение, А вот описание ошибок и способ создания проекта я по вашим просьбам описал. А да, QtCreator рабочий. Его родные примеры работают. Свои проекты создавал, всё вроде норм. Проблем не замечал. Сообщение отредактировал ViGOur - 8.5.2015, 9:54
Причина редактирования: Не забываем про теги code и quote
|
|
|
Текстовая версия | Сейчас: 14.1.2025, 6:13 |