Run-Time Check Failure #0 请各位帮帮忙啊,纠结很久了
[b]用的Irrlicht引擎 vs2010写的
具体:Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
代码:
[size=16px]Menu.h
#include <irrlicht.h>
#include <iostream>
using namespace irr;
#ifdef _IRR_WINDOWS_
#pragma comment(lib, "Irrlicht.lib")
#endif
class Menu : public IEventReceiver
{
public:
Menu();
bool run(bool &fullscreen,bool &outmusic,video::E_DRIVER_TYPE& outDriver);
virtual bool OnEvent(const SEvent& event);
private:
IrrlichtDevice *MenuDevice;
bool fullscreen;
bool music;
};
Menu.cpp
#include "Menu.h"
Menu::Menu():MenuDevice(0),fullscreen(false),music(true)
{
}
bool Menu::OnEvent(const SEvent& event){return true;}
[b]bool Menu::run(bool &fullscreen,bool &outmusic,video::E_DRIVER_TYPE& outDriver)
{
MenuDevice=createDevice(video::EDT_OPENGL,
core::dimension2d<u32>(800, 600), 32, false, false, false, 0);
MenuDevice->setWindowCaption(L"demo1"); 这句删除后又是访问冲突....要吐血了啊
video::IVideoDriver * driver = MenuDevice->getVideoDriver();
scene::ISceneManager* smgr = MenuDevice->getSceneManager();
gui::IGUIEnvironment* guienv = MenuDevice->getGUIEnvironment();
gui::IGUISkin* skin = guienv->getSkin();
gui::IGUIFont* font = guienv->getFont("fontcourier.bmp");
//front skin
if (font)
skin->setFont(font);
skin->setFont(guienv->getBuiltInFont(),gui:: EGDF_BUTTON);
//addbutton
guienv->addButton(core::rect<int>(500,100,600,150), 0, 101, L"Start Demo");
guienv->addButton(core::rect<int>(500,200,600,250), 0, 101, L"Set");
guienv->addButton(core::rect<int>(500,300,600,350), 0, 101, L"Help");
guienv->addButton(core::rect<int>(500,400,600,450), 0, 101, L"Exit");
while(MenuDevice->run())
if (MenuDevice->isWindowActive())
{
driver->beginScene(true, true,video::SColor(0,200,200,200));
guienv->drawAll();
smgr->drawAll();
driver->endScene();
}
MenuDevice->drop();
return 0;
}
Main.cpp
#include <irrlicht.h>
#include <windows.h>
#include <stdio.h>
#include"Menu.h"
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
#ifdef _IRR_WINDOWS_
#pragma comment(lib, "Irrlicht.lib")
#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")
#endif
int main()
{
bool fullscreen = false;
bool music = true;
video::E_DRIVER_TYPE outDriver=video::EDT_OPENGL;
Menu Cmenu;
Cmenu.run(fullscreen,music,outDriver);
return 0;
}
[解决办法]
问题没说清楚
vs2008调试没报rtc失败
[解决办法]