Nyt huomasin, että muinaisessa yrityksessäni koodata musiikinsoitin, ei ollutkaan virhe koodissani, jota epätoivoisesti etsin päiväkausia.
Elikkäs, nyt hoksasin että kun laitoin SDL_Mixerin valmiiksi yhteen tiedostooni tulevaisuutta varten, ohjelma vetää jumiin lopetusvaiheessa, eli kun suoritetaan funktio Mix_CloseAudio();
Et varmaan sinäkään usko, että koko homma kaatuisi viattomaan funktioon, jotenka laitanpa "koko" mikserin koodin tähän, eli en koko koodia:
// Perus includet #include <SDL/SDL_mixer.h> int main() { bool active = 1; if(SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) == -1) active = 0; if(Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024) == -1) active = 0; // Koodia Mix_CloseAudio(); // Muut lopetukset }
...oon toki alustanu & asentanu SDL:n, ja kaiken muunkin.
Ja käännös:
g++ dididam.cpp -o daidadim -lSDL -lSDL_ttf -lSDL_mixer -lSDL_gfx
Mitäs kaikkea vikaa ylläolevasta voisikaan löytyä? :o
Edit: Voisiko johtua iostreamin puutteesta?
No ei se vika varmaan tuosta pätkästä löydy, kun kyseessä on kuitenkin jokaisesta ohjelmasta löytyvä alustus ja lopetus.
Millä olet todennut, että vika on juuri kyseisessä kutsussa?
Metabolix kirjoitti:
No ei se vika varmaan tuosta pätkästä löydy, kun kyseessä on kuitenkin jokaisesta ohjelmasta löytyvä alustus ja lopetus.
Millä olet todennut, että vika on juuri kyseisessä kutsussa?
Koska kaikki toimii muuten hyvin kuten ennenkin, mutta kun tuon lisäsin, painoin esciä, ohjelma vetää jumiin.
Kaikista v-maisinta tämä on koko ruudun kokoisissa ohjelmassani, ku pitää koko kone käynnistää uudelleen.
ankzilla kirjoitti:
Edit: Voisiko johtua iostreamin puutteesta?
Mitä ihmeen merkitystä sillä muka olisi?
ankzilla kirjoitti:
Koska kaikki toimii muuten hyvin kuten ennenkin, mutta kun tuon lisäsin, painoin esciä, ohjelma vetää jumiin.
Onko tuo varmasti pääsilmukan ulkopuolella, kuten aloitusviestisi koodista voi ymmärtää? Oletko jotenkin tarkistanut, että ohjelma pääsee edes tuohon asti? (Voit tarkistaa asian debuggerilla tai vaikka tulostamalla std::cerr-virtaan viestejä.)
Metabolix kirjoitti:
Onko tuo varmasti pääsilmukan ulkopuolella, kuten aloitusviestisi koodista voi ymmärtää? Oletko jotenkin tarkistanut, että ohjelma pääsee edes tuohon asti? (Voit tarkistaa asian debuggerilla tai vaikka tulostamalla std::cerr-virtaan viestejä.)
Pääsilmukan ulkopuolella on. Ihan lopussa, mutta kuitenkin ennen return 0:aa.
Kyllähän sen ohjelman pitäisi tuohon asti päästä, kun ennen kuin laitoin noita SDL_Mixerin juttuja tohon se toimi mainiosti.
Debuggereista en tiedä yhtään mitään, kuin tuosta cerristäkään.
Pitänee kookletella tuota, jos jotain löytyisi...
...ja löytyikin:
http://www.cplusplus.com/reference/iostream/
Nyt tekisi mieli kysyä, että mitä tuo iostream.h oikeasti tekee?
Oikea tiedosto on iostream ilman .h:ta. Include liittää tiedoston toiseen ja otsikkotiedostot sisältävät esittelyitä.
C++ sisältää neljä standardivirtaa: std::cin lukemiseen, std::cout normaaliin tulostamiseen (käyttäjälle) sekä std::cerr ja std::clog virheilmoitusten ja lokitietojen tulostamiseen. Jos ei ymmärrä näiden eroista (joita en nyt aio selittää), kannattaa vain muistaa, että std::cerr on näistä turvallisin valinta, jos on tarkoitus saada jotain tulostettua juuri ennen kaatumista.
Kiitos.
Taisi vahingossa tulla tuo .h iostreamin perään.(?)
Mutta kokeilenpa tuota siis, kiitos =>
Edit: Ei toimi. Pitänee perehtyä asiaan syvemmin..
Edit2: Nyt ku laitoin väliaikaisesti kommentit tuohon SDL_Mixerin alustukseen ja lopetukseen, kaikki toimii taas kuin unelma.
ankzilla kirjoitti:
Edit: Ei toimi. Pitänee perehtyä asiaan syvemmin..
Mikä ei toimi? Viestien tulostus std::cerr-virtaanko? Miten ei toimi?
Metabolix kirjoitti:
ankzilla kirjoitti:
Edit: Ei toimi. Pitänee perehtyä asiaan syvemmin..
Mikä ei toimi? Viestien tulostus std::cerr-virtaanko? Miten ei toimi?
En osaa sanoa. :D
Kääntäjästä meni läpi kylläkin...
Mutta tsekkailen näitä juttuja viel ku en oikein tiedä miten tuo cerri toimii.
(Käytän siis using namespace std:tä)
using namespace std; cerr<<"Virhe!!!!"<<std::endl;
Ihan samalla tavalla se toimii kuin cout. Tee vaikka Hello World -ohjelma sillä, niin näet.
Juu, pitää kokeilla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.