Autor Wątek: Ogre3D - wyjątek resources.cfg  (Przeczytany 1562 razy)

Offline krzysiek9394

  • Użytkownik

# Styczeń 01, 2009, 21:40:12
Witam mam problem z działaniem prostego programu ogre3D. Kiedy go uruchamiam pokazuje błąd:
OGRE EXCEPTION(6:FileNotFoundException):'resources.cfg' file not found! in ConfigFile::load at ..\src\OgreConfigFile.cpp (line 84)
W programie podałem mu ścieżkę z resources.cfg. O co chodzi?
Kod programu:
#include "Ogre.h"     /* Wszystkie nagłówki OGRE */
#include "ExampleApplication.h"
#include <windows.h>  /* Umożliwia wypisywanie błędów */

// Dziedziczymy ExampleApplication
class MyApp : public ExampleApplication
{
  protected:
  public:
    MyApp()
    {
    }

    ~MyApp()
    {
    }
  protected:
    /** createScene jest funkcją czysto wirtualną w ExampleApplication,
     *  nadpisujemy ją, aby nic nie robiła.
     *  Na początku tworzy ona pustą scenę.
     **/
    void createScene(void)
    {
    }
};

 void setupResources(void)
    {
        // Load resource paths from config file
        ConfigFile cf;
        cf.load("../data/resources.cfg");

        // Go through all sections & settings in the file
        ConfigFile::SectionIterator seci = cf.getSectionIterator();

        String secName, typeName, archName;
        while (seci.hasMoreElements())
        {
            secName = seci.peekNextKey();
            ConfigFile::SettingsMultiMap *settings = seci.getNext();
            ConfigFile::SettingsMultiMap::iterator i;
            for (i = settings->begin(); i != settings->end(); ++i)
            {
                typeName = i->first;
                archName = i->second;
                ResourceGroupManager::getSingleton().addResourceLocation(
                    archName, typeName, secName);
            }
        }
    }
 
INT WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,INT)
{
   MyApp App;     // Tworzymy instancję naszej klasy
   try
   {
     App.go();       // ExampleApplication dostarcza metodę go, która rozpoczyna rendering
     return 0;   // Zwraca 0 w przypadku powodzenia
   }
   catch (Ogre::Exception& e)  // Przechwytuje wyjątki (błędy)
   {
     MessageBox( NULL, e.getFullDescription().c_str(), "Wyjątek!",
           MB_OK | MB_ICONERROR | MB_TASKMODAL);
     return 1;   // Zwrócenie liczby różnej od zera oznacza niepowodzenie
   }
}
« Ostatnia zmiana: Styczeń 01, 2009, 22:16:15 wysłana przez krzysiek9394 »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Porke

  • Użytkownik

# Styczeń 01, 2009, 21:52:02
Chodzi o to, że prawdopodobnie ścieżka się nie zgadza i funkcja nie może dostać się do pliku... Przyjrzyj się ponownie Working Directory w opcjach projektu, temu, co podajesz do cf.load i gdzie leży ten plik, zresztą, sam gdy zaczynałem z Ogrem to wszystkie informacje na ten temat mieli na swojej Wiki.