Здравствуйте!Я не могу понять что у меня с движком HGE постоянно выдает ошибки такого рода: Необработанное исключение в "0x003c2501" в "Game HGE.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000". качал разные версии HGE не чего не помогает! Помогите пожалуйста кто может! Заранее благодарен!
Добавлено (28.05.2010, 21:58) --------------------------------------------- Пробою запускать разные проекты.Все равно одно и тоже!
Так самое интересное, запускаю проэкт в своем компиляторе который прилагался вместе с движком, выскакивает ошибка(которая описана вверху) только цифры другие
Добавлено (28.05.2010, 22:04) --------------------------------------------- Раньше такого у меня не было,я в нем не работал где-то 7-8 месяцев, а потом решил снова изучать его и тут на тебе!
bool FrameFunc() { int hrs, mins, secs; float tmp;
// Process keys
switch(hge->Input_GetKey()) { case HGEK_0: speed=0.0f; break; case HGEK_1: speed=0.1f; break; case HGEK_2: speed=0.2f; break; case HGEK_3: speed=0.4f; break; case HGEK_4: speed=0.8f; break; case HGEK_5: speed=1.6f; break; case HGEK_6: speed=3.2f; break; case HGEK_7: speed=6.4f; break; case HGEK_8: speed=12.8f; break; case HGEK_9: speed=25.6f; break; case HGEK_ESCAPE: return true; }
if(!InitSimulation()) { // If one of the data files is not found, display an error message and shutdown MessageBox(NULL, "Can't load resources. See log for details.", "Error", MB_OK | MB_ICONERROR | MB_SYSTEMMODAL); hge->System_Shutdown(); hge->Release(); return 0; }
Добавлено (28.05.2010, 22:18) --------------------------------------------- Даже самы простой код:
Code
#include "hge.h"
HGE *hge = 0;
// This function will be called by HGE once per frame. // Put your game loop code here. In this example we // just check whether ESC key has been pressed. bool FrameFunc() { // By returning "true" we tell HGE // to stop running the application. if (hge->Input_GetKeyState(HGEK_ESCAPE)) return true;
// Continue execution return false; }
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { // Here we use global pointer to HGE interface. // Instead you may use hgeCreate() every // time you need access to HGE. Just be sure to // have a corresponding hge->Release() // for each call to hgeCreate() hge = hgeCreate(HGE_VERSION);
// Set our frame function hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);
// Set the window title hge->System_SetState(HGE_TITLE, "HGE Tutorial 01 - Minimal HGE application");
// Run in windowed mode // Default window size is 800x600 hge->System_SetState(HGE_WINDOWED, true);
// Don't use BASS for sound hge->System_SetState(HGE_USESOUND, false);
// Tries to initiate HGE with the states set. // If something goes wrong, "false" is returned // and more specific description of what have // happened can be read with System_GetErrorMessage(). if(hge->System_Initiate()) { // Starts running FrameFunc(). // Note that the execution "stops" here // until "true" is returned from FrameFunc(). hge->System_Start(); } else { // If HGE initialization failed show error message MessageBox(NULL, hge->System_GetErrorMessage(), "Error", MB_OK | MB_ICONERROR | MB_APPLMODAL); }
// Now ESC has been pressed or the user // has closed the window by other means.
// Restore video mode and free // all allocated resources hge->System_Shutdown();
// Release the HGE interface. // If there are no more references, // the HGE object will be deleted. hge->Release();
А, вспомнил, у меня тоже давно студия начала какую-то ошибку выдавать, не помню какую, может такую же. Вобщем стал использовать Dev-C++ и HGE 1.7 - все работает.
Ошибка означает, что ты пытаешься использовать что-то не инициализированное. Если сильно упростить, то есть какой-то указатель, которому не было присвоено значение (указатель = NULL), а ты пытаешься его использовать.
Простой пример кода, приводящий к этой ошибке:
Code
#include <Windows.h>
class any { int* i; public: any() { i = 0; } void ini() { i = new int; } void set(int _i) { *i = _i; }
};
void main() { any a; // a.ini(); // если эту строку раскоментить, все работает. a.set(10); system("pause");
}
зы: Иногда может помочь компиляция в Release конфигурации, но чаще нужно копать код.
Просмотрел его, в нем все в порядке(а может есть что-то, что я не замечаю, а вы заметите?) а все равно выдает ошибку: "Необработанное исключение в "0x003b16a0" в "ggg.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000". "в файле hge.h(это файл движка!)
Сообщение отредактировал Stas96 - Суббота, 29 Мая 2010, 11:52
Попробуй закоментить что-нибудь, простись по коду отладчиком и т.д.
Ну или выложи весь проект, а то по коду непонятно, что у тебя там с настройками.
Поймал я таки эту ошибку. Происходит она тогда, когда двиг не может найти ресурсы, например картинки.
В прикреплении исходник проекта, добавь туда hge.dll и попробуй скомпилировать. Если запустится, удали имеющиеся там картинки и скомпилируй повторно - получишь свою ошибку. (запускать h.sln)
Всем большое спасибо за помощь.Все работает, просто надо было добавить bass.dll в проект всем спасибо!!!
Добавлено (29.05.2010, 13:33) --------------------------------------------- Это тоже верно, но странно я добавил библиотеку bass.dll и все заработало!!