Пятница, 29 Ноября 2024, 05:09

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
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)
---------------------------------------------

Quote (Uzzzer)
Вот скрины

небольшой ньюанс: обычно новый проект я создаю на основе своего какого-нить старого простого проекта. и, чтобы каждый раз не прописывать линки(к тому же это можно забыть сделать), я вместо них пишу после инклюдов следующее:
#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. и то- только в одном месте программы. таким образом, логичным и правильным будет выделить генерацию лабиринтов в отдельный файл.

возможно, какие-то другие части программы тоже понадобится выделить в отдельный файл.

пожалуйста, помогите мне разобраться с этим. а то- никак не получается sad


все правила форумной игры Дуэль Программистов
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг