HGE & Visual C++
| |
noname | Дата: Четверг, 05 Января 2012, 13:49 | Сообщение # 1 |
заслуженный участник
Сейчас нет на сайте
| установил Visual C++ 2008 Express Edition. пытаюсь юзать HGE. отбрыкивается, зараза:
ругается на использование месадж бокса: Quote MessageBox(NULL, hge->System_GetErrorMessage(), "Error", MB_OK | MB_ICONERROR | MB_SYSTEMMODAL); (2-й и третий операнд ему не нравится).
закомментил этот бокс нафик, так он пишет о какой-то ошибке во внешних файлах- чёта у него не срастается.
ошибку вызывает даже приложение с всего одной строкой в мэйне: Quote hge = hgeCreate(HGE_VERSION);
при этом либы и инклюды вродь все настроил как надо.Добавлено (05.01.2012, 13:48) --------------------------------------------- до этого юзал на том же Visual C++ 3d-движок Irrlitch- пролем не было. НО сейчас хочу именно 2d-движок. HGE вродь рекомендовали. Добавлено (05.01.2012, 13:49) --------------------------------------------- и, да- Visual C++ юзаю совсем не давно. до этого писал на дельфях и немножко на билдере. НО вродь и с VC уже более-менее разобрался- какие-то простые проги делал.
на Delphi успешно юзал ZenGL- очень понравилось, но сейчас хочу освоить C++
все правила форумной игры Дуэль Программистов
|
|
| |
05142 | Дата: Четверг, 05 Января 2012, 14:15 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
| попробуй MessageBoxA
mecinvader
|
|
| |
noname | Дата: Четверг, 05 Января 2012, 18:29 | Сообщение # 3 |
заслуженный участник
Сейчас нет на сайте
| Quote (05142) попробуй MessageBoxA действительно, месаджбокс теперь он заглатывает нормально. спасибо.
однако остались те ошибки, которые появляются из-за строки Quote hge = hgeCreate(HGE_VERSION); вот они: Quote 1>Demo_1.obj : error LNK2019: ссылка на неразрешенный внешний символ _hgeCreate@4 в функции _main 1>D:\my_projects\0t-HGE\0000\Demo_1\Debug\Demo_1.exe : fatal error LNK1120: 1 неразрешенных внешних элементов Добавлено (05.01.2012, 18:29) --------------------------------------------- и ещё вопрос: я так понимаю, что под HGE корректнее выбирать "создать консольное приложение"? (впрочем, ошибка остаётся в любом случае)
все правила форумной игры Дуэль Программистов
|
|
| |
Els | Дата: Четверг, 05 Января 2012, 18:52 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| Quote (noname) HGE корректнее выбирать "создать консольное приложение"? Попробуй при создание проекта выбрать "Пустой проэкт"
|
|
| |
noname | Дата: Четверг, 05 Января 2012, 19:12 | Сообщение # 5 |
заслуженный участник
Сейчас нет на сайте
| Quote (Els) Попробуй при создание проекта выбрать "Пустой проэкт" ну, обычно я создаю не просто какое-то приложение (консольное или нет), а приложение с прекомпилированным заголовком.
потому что иначе что-то идёт не так.
при создании пустого проекта получилась та же фигня: после создания пустого проекта создал файл cpp и ввёл: Quote #include "stdafx.h"
void main() { } выдало ошибку: Quote 1>mt.exe : general error c10100b1: Failed to load file ".\Debug\Demo_1a.exe". 5 C405BAO =09B8 C:070==K9 D09;.
хотя, когда я создаю точно такое же консольное приложение с прекомпилированным заголовком, то всё работает(ну, там мэйн выглядит слегка иначе по умолчанию, но его можно поправить до такого состояния).Добавлено (05.01.2012, 19:12) --------------------------------------------- самое удивительное в этом всём то, что у меня нормально работают простые консольные приложения, а так же нормально подключается и работает другой движок (Irrlicht).
все правила форумной игры Дуэль Программистов
|
|
| |
Rorschach | Дата: Четверг, 05 Января 2012, 19:54 | Сообщение # 6 |
участник
Сейчас нет на сайте
| Quote (noname) 1>Demo_1.obj : error LNK2019: ссылка на неразрешенный внешний символ _hgeCreate@4 в функции _main 1>D:\my_projects\0t-HGE\0000\Demo_1\Debug\Demo_1.exe : fatal error LNK1120: 1 неразрешенных внешних элементов Не подключена hge.lib.
Never compromise. Not even in the face of Armageddon.
|
|
| |
noname | Дата: Четверг, 05 Января 2012, 21:15 | Сообщение # 7 |
заслуженный участник
Сейчас нет на сайте
| Quote (Rorschach) Не подключена hge.lib. думаю, ты прав. во всяком случае где-то было какое-то описание, как подключать links двух каких-то lib(одна из них- hge.lib), но: 1. я не понял, как это делается в Visual C++ 2008 Express Edition 2. поскольку путь на библиотеки указан, я думал, что линковать не обязательно 3. потом про это забыл
отсюда ВОПРОС: как подключать линки в Visual C++ 2008 Express Edition?
все правила форумной игры Дуэль Программистов
|
|
| |
Matou | Дата: Четверг, 05 Января 2012, 21:44 | Сообщение # 8 |
Исходный коТ
Сейчас нет на сайте
| Project->Properties->Configuration Properties->Linker->Input->Additional Dependencies прописать в этом поле hge.lib
Плюс к этому надо указать пути до заголовочных и библиотечных файлов Tools->Options->Projects And Solutions->VC++ Directories
|
|
| |
Demeron | Дата: Четверг, 05 Января 2012, 22:11 | Сообщение # 9 |
User created in C++
Сейчас нет на сайте
| Quote (noname) отсюда ВОПРОС: как подключать линки в Visual C++ 2008 Express Edition? #pragma comment(lib,"hge.lib");
|
|
| |
noname | Дата: Воскресенье, 08 Января 2012, 08:24 | Сообщение # 10 |
заслуженный участник
Сейчас нет на сайте
| Quote (Matou) roject->Properties->Configuration Properties->Linker->Input->Additional Dependencies прописать в этом поле hge.lib спасибо, помогло. вопрос решён))Добавлено (06.01.2012, 09:14) ---------------------------------------------
Quote (Demeron) #pragma comment(lib,"hge.lib"); спасибо. надо будет попробовать.Добавлено (07.01.2012, 13:37) ---------------------------------------------
Quote (Matou) Project->Properties->Configuration Properties->Linker->Input->Additional Dependencies прописать в этом поле hge.lib Для использования класса hgeSprite понадобилось туда же добавить hgehelp.lib, но воспользоваться спрайтом не удаётся: выдаётся ошибка Quote 1>LINK : fatal error LNK1104: не удается открыть файл ''LIBC.lib''
причём файла LIBC.lib, вроде как, в HGE нет вовсе..
простейшее приложение без спрайтов создавать удаётся. в чём может быть проблема?Добавлено (07.01.2012, 17:39) --------------------------------------------- ..
НАШЁЛ РЕШЕНИЕ на англоязычных форумах: Quote I am trying to convert a VC6 project to VC9, and the linker tells me that it cannot open file 'LIBC.lib'. Quote Libc.lib is the old single-threaded static-linked C runtime library. This is no longer used in recent versions of Visual C++. Static-linked projects should use the multi-threaded library LibMT.lib. Quote This attempt to link libc.lib should not be there, but you might try going to Project Properties->Configuration Properties->Linker->Input->Ignore Specific Library and typing libc.lib there. короч- нужно добавлять libc.lib в список игнорирования.Добавлено (07.01.2012, 17:40) --------------------------------------------- думаю, с этой проблемой столкнётся каждый, кто юзает Visual C++ 2008 Express Edition. Добавлено (08.01.2012, 08:24) --------------------------------------------- прилагающиеся к HGE демки как-то бестолково составлены. хочу просто вывести один спрайт на экран. пересмотрел все 8-мь примеров. вроде как в 7-м есть то, что нужно. но ни из текста проги, ни из комментов не ясно, как загружаемая в tex текстура попадает на экран. и это не говоря уже о том, что примеры приходится допиливать, чтобы они работали..
чем больше я разбираюсь с Visual C++ и HGE, тем больше мне нравится Delphi и ZenGL. но я таки, не смотря ни на что, хочу разобраться именно с C++. и, наверное, всё-таки продолжу разбираться с HGE. к нему документация вроде как хорошая. буду разбираться.
все правила форумной игры Дуэль Программистов
|
|
| |
GECK | Дата: Воскресенье, 08 Января 2012, 11:28 | Сообщение # 11 |
заслуженный участник
Сейчас нет на сайте
| Quote (noname) как загружаемая в tex текстура попадает на экран Ну, там же вроде все ясно. Здесь мы загружаем текстуру: Code tex=hge->Texture_Load("zazaka.png"); Здесь создаем спрайт, используя загруженную текстуру: Code spr=new hgeSprite(tex,0,0,64,64); Ну а здесь(в функции RenderFunc) выводим спрайт на экран в заданном месте и с заданными параметрами: Code spr->RenderEx(pObjects[i].x, pObjects[i].y, pObjects[i].rot, pObjects[i].scale);
Всё гениальное просто. И хреново работает.
|
|
| |
05142 | Дата: Воскресенье, 08 Января 2012, 11:48 | Сообщение # 12 |
постоянный участник
Сейчас нет на сайте
| noname, вроде бы для Zengl можно писать на C++
mecinvader
|
|
| |
noname | Дата: Понедельник, 09 Января 2012, 18:40 | Сообщение # 13 |
заслуженный участник
Сейчас нет на сайте
| с выводом спрайта в HGE разобрался- нагуглил подсказки на форумах. пробую делать простенький платформер.
Quote (GECK) Ну а здесь(в функции RenderFunc) выводим спрайт на экран в заданном месте и с заданными параметрами: спасибо. однако, из текста исходного кода не понятно, что там что означает. демки забиты какими-то на фик не нужными вычислениями красивостей- лучше бы лишнюю строчку комментов написали бы.
Quote (05142) noname, вроде бы для Zengl можно писать на C++ ну, не знаю. а кто-нибудь уже писал?Добавлено (09.01.2012, 18:40) --------------------------------------------- ..
а спрайтовую анимацию лучше всего создавать, заводя вместо спрайта массив спрайтов, в котором будут храниться различные кадры этого спрайта?
наверное, так.
все правила форумной игры Дуэль Программистов
|
|
| |
GECK | Дата: Понедельник, 09 Января 2012, 18:49 | Сообщение # 14 |
заслуженный участник
Сейчас нет на сайте
| Ну или юзать класс hgeAnimation, но в целях обучения, пожалуй, и правда лучше свой велосипед написать.
Всё гениальное просто. И хреново работает.
|
|
| |
noname | Дата: Понедельник, 09 Января 2012, 21:30 | Сообщение # 15 |
заслуженный участник
Сейчас нет на сайте
| Quote (GECK) Ну или юзать класс hgeAnimation о, буду знать.
демки к HGE просто никуда не годятся. вот к ZenGL демки- замечательные. а создатели демок к HGE почему-то не подумали о том, что кто-то может захотеть создать игру на их движке. с анимированными спрайтами. просто удивительно- для чего, по замыслу авторов, предназначался движок HGE?
создателям своих движков(их есть на этом сайте)) на заметку: к дельфёвому движку ZenGL( http://zengl.org/index_ru.html ) прилагается хороший набор демок, в которых легко разобраться, и которые демонстрируют основные возможности, которые понадобятся большинству начинающих игроделов. хорошие демки- половина успеха движка.
к счастью, у HGE тоже есть много поклонников, и найти на форумах ответы на вопросы не так уж и сложно. НО не всегда ясно, что искать. вот, я бы ни за что не догадался искать какой-то специальный класс для анимации. попробую разобраться, как им пользоваться, и насколько это удобно.
я верю, что HGE- замечательный двиг. к тому же кросс-платформенный и бесплатный. но "въехать" в него по-началу не просто.
создание своего простенького платформера идёт медленно: я щазз заморочился с пиксель-артом стен. кое-что получилось))
было бы неплохо, если бы главного героя нарисовал кто-нить другой. пока что на моё немножко наглое сообщение здесь: http://gcup.ru/forum/31-19491-326057-16-1325951485 никто не ответил.
все правила форумной игры Дуэль Программистов
|
|
| |
Uzzzer | Дата: Вторник, 10 Января 2012, 01:06 | Сообщение # 16 |
участник
Сейчас нет на сайте
| 1>LINK : fatal error LNK1104: не удается открыть файл "hge.lib hgehelp.lib"
Не могу понять как исправить ошибку? Помогите плиз!Добавлено (10.01.2012, 01:06) --------------------------------------------- и это 1>c:\users\администратор\documents\visual studio 2010\projects\engine\engine\hge_s.cpp(1): fatal error C1083: Не удается открыть файл включение: include\hge.h: No such file or directory
|
|
| |
Rorschach | Дата: Вторник, 10 Января 2012, 01:42 | Сообщение # 17 |
участник
Сейчас нет на сайте
| Quote (Uzzzer) Не могу понять как исправить ошибку? Помогите плиз! В настройках проекта пропиши пути к библиотекам и хедерам.
Never compromise. Not even in the face of Armageddon.
Сообщение отредактировал Rorschach - Вторник, 10 Января 2012, 01:43 |
|
| |
Uzzzer | Дата: Вторник, 10 Января 2012, 02:03 | Сообщение # 18 |
участник
Сейчас нет на сайте
| Quote (Rorschach) В настройках проекта пропиши пути к библиотекам и хедерам. Все сделал но все равно ошибка остается =( может что то не так сделал...
Вот скрины Добавлено (10.01.2012, 02:03) --------------------------------------------- На первом скрине не стоит ; но я ее уже поставил=) но все равно ошибка есть
|
|
| |
Rorschach | Дата: Вторник, 10 Января 2012, 02:19 | Сообщение # 19 |
участник
Сейчас нет на сайте
| В таком случае вероятно пути указаны неверно, или попробуй выставить их после дефолтного $INCLUDE_PATH/LIB_PATH
Never compromise. Not even in the face of Armageddon.
|
|
| |
noname | Дата: Суббота, 14 Января 2012, 15:11 | Сообщение # 20 |
заслуженный участник
Сейчас нет на сайте
| Quote (Uzzzer) Все сделал но все равно ошибка остается дело в том, что демки к HGE приходится немножко допиливать самому(руки бы поотбивать тому, кто их писал).
так, например, если прописать пути и залинковать, как рекомендуется, то примеры работать не будут.
нужно ещё в самих примерах исправить #include "..\..\include\hge.h" на #include "hge.h" ну, или пути прописывать не как в обучалках рекомендуется, а соответственно.Добавлено (10.01.2012, 17:05) ---------------------------------------------
небольшой ньюанс: обычно новый проект я создаю на основе своего какого-нить старого простого проекта. и, чтобы каждый раз не прописывать линки(к тому же это можно забыть сделать), я вместо них пишу после инклюдов следующее: #pragma comment(lib,"hge.lib") #pragma comment(lib,"hgehelp.lib")
таким образом, если теперь в сишник созданного нового проекта просто скопировать текст старого, то всё будет работать, и не понадобиться прописывать линки.Добавлено (10.01.2012, 17:06) ---------------------------------------------
Quote (noname) и не понадобиться прописывать линки эх, всё равно понадобится, чтобы добавить в исключения libc.lib( но на Visual C++ 2010 это, вероятно, не понадобится, и всё будет хорошо))Добавлено (10.01.2012, 17:08) --------------------------------------------- вот, ещё нарыл каких-то уроков специально для Visual C++ 2008: http://hge-blog.ru/17_urok-1-podklyuchenie-hge-k-microsoft-visual-studio-2008 Добавлено (14.01.2012, 15:01) --------------------------------------------- - - -
вообще-то я прогал на Delphi, но теперь перехожу на С++, и часто упираюсь в незнакомые штуки. например, выделывается подключение файлов, если я хочу создать многофайловое приложение.
глянул в тьюториалах к HGE- там шестая демка содержит два сишных файла: hge_tut06.cpp и menuitem.cpp (демонстрируется создание меню)
скомпилить всё это дело мне не удалось. как исправить- тоже не знаю. думал, на этом примере разобраться с созданием многофайловых приложений, получилось наоборот- чтобы скомпилить эту демку, нужно сначала самому во всём разобраться. Добавлено (14.01.2012, 15:06) --------------------------------------------- добавляю архив со своей недоделкой: http://zalil.ru/32494215
- в таком виде как щазз- не компилируется(функция WorldFill выделена в файл maz_gen.cpp) - когда функция WorldFill была прописана в основном файле и проект был однофайловым- всё компилировалось. Добавлено (14.01.2012, 15:11) --------------------------------------------- --
необходимость выделить генерацию лабиринта в отдельный файл вызвана тем, что она будет большой по объёму и содержать много функций, из которых основная программа обращается напрямую только к одной- WorldFill. и то- только в одном месте программы. таким образом, логичным и правильным будет выделить генерацию лабиринтов в отдельный файл.
возможно, какие-то другие части программы тоже понадобится выделить в отдельный файл.
пожалуйста, помогите мне разобраться с этим. а то- никак не получается
все правила форумной игры Дуэль Программистов
|
|
| |
|