Вторник, 18 декабря 2012 09:05

Диплом C++ Qt Box2D Google Protobuf

Автор
Оцените материал
(2 голосов)

Как всегда на написание дипломного проекта времени оставалось мало поэтому решено было искать что то полу-готовое и делать из этого что то свое J

В условиях дипломного проекта было:

1.       Код на C++

2.       работоспособность под Linux

3.       Использование сети

4.       Использование открытых библиотек

Поиск по яндексу дал интересный проект «2D Шутер на C++ & Qt» а именно http://ru.twitch.tv/fippobak/b/330941403. Исходники здесь: https://github.com/bakwc/Epsilon5/

Все что нужно есть осталось это все собрать.

Для начала были скачаны:

1.      Qt: http://qt-project.org/downloads

2.      Box2D: http://code.google.com/p/box2d/

3.      Protobuf: http://code.google.com/p/protobuf/

И тут началось самое интересное.

Сначала я пытался объединить Qtlibraries и QtCreator. При открытии проекта выскакивало Подходящие профили Qt не найдены. После лазания по интернету и прочих мытарств я нашел лучшее решение. Все снес и скачал Qt SDK. Он, что называется, заработал из коробки. Почти… При сборке в окне вывода и проблем (issue) появились «крокозябры» (проблема с кодировкой). Опять яндекс и поиском я нашел: http://lab113.ru/qtcreator_kodirovka.php . Решилось заменой файла jom в папке C:\QtSDK\QtCreator\bin\ на скачанный по ссылке с сайта: http://lab113.ru/jom/x86/jom.exe

Ура. Теперь я могу прочитать что пишет мне копилятор. А пишет он мне следующее:

c:\distrib\programmer\bakwc-epsilon5-a625e59\bakwc-epsilon5-a625e59\eps5client\..\Eps5Proto\Epsilon5.pb.h:9: ошибка: C1083: Неудаетсяоткрытьфайлвключение: ../google/protobuf/stubs/common.h: No such file or directory

Ок. Изархива protobuf-2.4.1.zip  доставемпапку google, котораялежитв \protobuf-2.4.1\src\ икопируемв C:\QtSDK\Desktop\Qt\4.8.1\msvc2010\include\

Новаяошибка: c:\distrib\programmer\bakwc-epsilon5-a625e59\bakwc-epsilon5-a625e59\eps5client\..\Eps5World\world.h:12: ошибка: C1083: Неудаетсяоткрытьфайлвключение: Box2D/Box2D.h: No such file or directory

Изархива Box2D_v2.2.1.zip копируемпапку Box2D тудаже C:\QtSDK\Desktop\Qt\4.8.1\msvc2010\include\

Следущая ошибка :-1: ошибка: LNK1104: не удается открыть файл "protobuf.lib"

Нужно скомпилировать библиотеку protobuf. По нему хорошая статья здесь: http://mrnone.blogspot.ru/2011/05/google-protobuf.html В кратце:

Распакованный архив исходных файлов protobuf-2.4.1.zip в числе прочего содержит каталог vsprojects, содержащий проекты, для сборки Protobuf в Visual Studio. Открываем Visual Studio и в нем солюшен protobuf.sln

Собираем. Теперь собранные библиотеки, скопированные заголовки и компилятор protoc можно использовать в своём проекте. Копируем libprotobuf.lib, libprotobuf-lite.lib и libprotoc.lib в C:\QtSDK\Desktop\Qt\4.8.1\msvc2010\lib\. Обращаем внимание что проект ищет protobuf.lib а у нас libprotobuf.lib. В окне проектов Qt щелкаем на Eps5Client.pro и меняем строку

LIBS+=-lprotobuf-lbox2d-lglui–lfreeglut

на

LIBS+=-llibprotobuf-lbox2d-lglui–lfreeglut

Тожесамоеделаемив Eps5Server.pro толькотамстрока «LIBS += -lprotobuf». Тем более меняем на «LIBS+=-llibprotobuf-lbox2d-lgluilfreeglut» во избежании дальнейших проблем.

Теперь проекту не хватает :-1: ошибка: LNK1104: не удается открыть файл "box2d.lib"

Нужно собрать Box2D. По той же схеме идем в Box2D_v2.2.1\Box2D_v2.2.1\Build\vs2010\ открываем с помощью Visual Studio солюшн Box2D.sln и получаем Box2D.lib  FreeGLUT.lib  GLUI.lib. Их тоже копируем в C:\QtSDK\Desktop\Qt\4.8.1\msvc2010\lib\.

БРАВО! У нас все скомпилировалось. Дальше проще: в файле network.cpp клиента исправляем в строчке _socket->connectToHost(QHostAddress("193.169.33.254"),1238); адрес на свой, где будет запускаться сервер. Если вы тестируете н локальном компьютере можно написать 127.0.0.1. Пересобираем, запускаем, радуемся первому успеху!

Все запускается но видим черный экран клиента. Просто нет картинок.Копируем arbuz.png, mad.png и peka.png в папку с клиентом \Eps5Client-build-desktop-Qt_4_8_1_for_Desktop_-_MSVC2010__Qt_SDK__Debug\debug\ Пересобираем.

Все теперь можно побегать и пострелять.

 

P.S. в следующий раз опишу по изменениям - как я прикручивал сюда Box2D движок...

Прочитано 17050 раз
Добавить комментарий