Fredrik90 Skrevet 4. februar 2005 Del Skrevet 4. februar 2005 hei hva har jeg gjort nå. First-chance exception at 0x00409067 in Flight-Real.exe: 0xC0000005: Access violation reading location 0x00000000. Unhandled exception at 0x00409067 in Flight-Real.exe: 0xC0000005: Access violation reading location 0x00000000. håper noen et hva jeg kan ha gjort? eventuelt hva jeg må fikse på. mvh. Fredrik Lenke til kommentar
Paull Skrevet 4. februar 2005 Del Skrevet 4. februar 2005 En null-pointer? Vanskelig å si noe meningsfylt uten å se noe kode, men det må gjøre er å initialisere pointeren før du prøver å lese fra den Lenke til kommentar
Fredrik90 Skrevet 5. februar 2005 Forfatter Del Skrevet 5. februar 2005 hva mener du med og intialisere. trodde jeg hadde tatt noe windows minne jeg. Lenke til kommentar
☀ ❄ Skrevet 5. februar 2005 Del Skrevet 5. februar 2005 (endret) Eksempel: // Riktig Plane* p = new Plane; if (p->speed() > 0) { std::cout << "The plane is moving!\n"; } // Galt Plane* p; if (p->speed() > 0) { std::cout << "The plane is not moving!\n"; } Å bruke en try-catch-block og finne ut hva slags exception som blir kastet er kanskje heller ikke så dumt. Edit: Legg merke til at det i mange tilfeller er en funksjon som gir deg en peker, avhengig av hvilket API det er snakk om. I et slikt tilfelle gjør du det på denne måten: Plane* p = CreatePlane(); Endret 5. februar 2005 av Myubi Lenke til kommentar
Fredrik90 Skrevet 5. februar 2005 Forfatter Del Skrevet 5. februar 2005 hei... takker så meget for det der myubi. har sett sånn før men visste ikke hvordan det skulle brukes. mvh. Fredrik Lenke til kommentar
Fredrik90 Skrevet 7. februar 2005 Forfatter Del Skrevet 7. februar 2005 hei igjen... lurer bare på om dette kan funke.eller er det dette som lager feilen? IDirectMusicLoader8 *dmusicLoader = 0; // the loader IDirectMusicPerformance8 *dmusicPerformance = 0; // the performance IDirectMusicSegment8 *dmusicSegment = 0; // the segment IDirectMusicAudioPath *dmusic3DAudioPath = 0; // the audiopath IDirectSound3DBuffer *ds3DBuffer = 0; // 3d buffer IDirectSound3DListener *ds3DListener = 0; // 3d listener håper på et raskt svar mvh. Fredrik Lenke til kommentar
saboi Skrevet 7. februar 2005 Del Skrevet 7. februar 2005 du må lage interfacet også.. nytter ikke å bare lage pointern. det står forklart hvordan du gjør det i SDK'en Lenke til kommentar
Fredrik90 Skrevet 10. februar 2005 Forfatter Del Skrevet 10. februar 2005 (endret) hei... vet ikke om jeg ser på feil sted, men finner ikke det du snakker om. har du noe jeg kan spesifikt å søke på? mvh. Fredrik edit: og så var det noe gramtikk. Endret 10. februar 2005 av Fredrik90 Lenke til kommentar
Fredrik90 Skrevet 11. februar 2005 Forfatter Del Skrevet 11. februar 2005 ingen som vet??? Lenke til kommentar
JBlack Skrevet 11. februar 2005 Del Skrevet 11. februar 2005 hei igjen... lurer bare på om dette kan funke.eller er det dette som lager feilen? IDirectMusicLoader8 *dmusicLoader = 0; // the loader IDirectMusicPerformance8 *dmusicPerformance = 0; // the performance IDirectMusicSegment8 *dmusicSegment = 0; // the segment IDirectMusicAudioPath *dmusic3DAudioPath = 0; // the audiopath IDirectSound3DBuffer *ds3DBuffer = 0; // 3d buffer IDirectSound3DListener *ds3DListener = 0; // 3d listener håper på et raskt svar mvh. Fredrik Dette er ikke feil, men så langt meningsløst. Pekerne må peke på noe før de brukes. Nå peker de på adresse 0. Så alt avhenger av hva som skjer videre. Lenke til kommentar
Fredrik90 Skrevet 11. februar 2005 Forfatter Del Skrevet 11. februar 2005 (endret) ok. bruker et eksempel fra en bok jeg har. #define INITGUID // we use GUID's with DMusic ////// Includes #include <windows.h> // standard Windows app include #include <dmusicc.h> // DirectMusic includes #include <dmusici.h> #include <d3d9types.h> // for D3DVECTOR #include <cguid.h> // for GUID_NULL #include <stdio.h> #include <stdlib.h> #include <math.h> // //// DirectMusic variables IDirectMusicLoader8 *dmusicLoader = 0; // the loader IDirectMusicPerformance8 *dmusicPerformance = 0; // the performance IDirectMusicSegment8 *dmusicSegment = 0; // the segment IDirectMusicAudioPath *dmusic3DAudioPath = 0; // the audiopath IDirectSound3DBuffer *ds3DBuffer = 0; // 3d buffer IDirectSound3DListener *ds3DListener = 0; // 3d listener DS3DBUFFER dsBufferParams; // 3d buffer properties DS3DLISTENER dsListenerParams; bool InitDirectXAudio(HWND hwnd) { char pathStr[MAX_PATH]; // path for audio file WCHAR wcharStr[MAX_PATH]; // create the loader object if (FAILED(CoCreateInstance(CLSID_DirectMusicLoader, NULL, CLSCTX_INPROC, IID_IDirectMusicLoader8, (void**)&dmusicLoader))) { MessageBox(hwnd, "Unable to create the IDirectMusicLoader8 object!\nPress OK to exit", "ERROR!", MB_OK); return false; } // create the performance object if (FAILED(CoCreateInstance(CLSID_DirectMusicPerformance, NULL, CLSCTX_INPROC, IID_IDirectMusicPerformance8, (void**)&dmusicPerformance))) { MessageBox(hwnd, "Unable to create the IDirectMusicPerformance8 object!\nPress OK to exit", "ERROR!", MB_OK); return false; } // intialize DirectMusic and DirectSound if (FAILED(dmusicPerformance->InitAudio(NULL, NULL, NULL, DMUS_APATH_DYNAMIC_STEREO, 64, DMUS_AUDIOF_ALL, NULL))) { MessageBox(hwnd, "Unable to initialize audio! Press OK to exit", "ERROR!", MB_OK); return false; } // create a standard 3D audiopath if (FAILED(dmusicPerformance->CreateStandardAudioPath(DMUS_APATH_DYNAMIC_3D, 64, TRUE, &dmusic3DAudioPath))) { MessageBox(hwnd, "Unable to create standard 3D audiopath! Press OK to exit", "ERROR!", MB_OK); return false; } // get the 3D buffer in the audiopath if (FAILED(dmusic3DAudioPath->GetObjectInPath(0, DMUS_PATH_BUFFER, 0, GUID_NULL, 0, IID_IDirectSound3DBuffer, (void**)&ds3DBuffer))) { MessageBox(hwnd, "Unable to retrieve 3D buffer from audiopath! Press OK to exit", "ERROR!", MB_OK); return false; } // get the 3D buffer parameters dsBufferParams.dwSize = sizeof(DS3DBUFFER); ds3DBuffer->GetAllParameters(&dsBufferParams); // set the new 3D buffer parameters dsBufferParams.dwMode = DS3DMODE_HEADRELATIVE; // relative to the listener ds3DBuffer->SetAllParameters(&dsBufferParams, DS3D_IMMEDIATE); // retrieve the listener from the audiopath if (FAILED(dmusic3DAudioPath->GetObjectInPath(0, DMUS_PATH_PRIMARY_BUFFER, 0, GUID_NULL, 0, IID_IDirectSound3DListener, (void**)&ds3DListener))) { MessageBox(hwnd, "Unable to retrieve the listener! Press OK to exit", "ERROR!", MB_OK); return false; } // get the listener parameters dsListenerParams.dwSize = sizeof(DS3DLISTENER); ds3DListener->GetAllParameters(&dsListenerParams); // set position of listener dsListenerParams.vPosition.x = 0.0f; dsListenerParams.vPosition.y = 0.0f; dsListenerParams.vPosition.z = 0.0f; ds3DListener->SetAllParameters(&dsListenerParams, DS3D_IMMEDIATE); // retrieve the current directory GetCurrentDirectory(MAX_PATH, pathStr); // convert to unicode string MultiByteToWideChar(CP_ACP, 0, pathStr, -1, wcharStr, MAX_PATH); // set the search directory dmusicLoader->SetSearchDirectory(GUID_DirectMusicAllTypes, wcharStr, FALSE); return true; } // LoadSegment() // desc: load a segment from a file bool LoadSegment(HWND hwnd, char *filename) { WCHAR wcharStr[MAX_PATH]; // convert filename to unicode string MultiByteToWideChar(CP_ACP, 0, filename, -1, wcharStr, MAX_PATH); // load the segment from file if (FAILED(dmusicLoader->LoadObjectFromFile(CLSID_DirectMusicSegment, IID_IDirectMusicSegment8, wcharStr, (void**)&dmusicSegment))) { MessageBox(hwnd, "Audio file not found! Press OK to exit", "ERROR!", MB_OK); return false; } // set the number of repeats for the segment to infinite dmusicSegment->SetRepeats(DMUS_SEG_REPEAT_INFINITE); // download the segment's instruments to the audiopath dmusicSegment->Download(dmusic3DAudioPath); return true; } // PlaySegment() // desc: start playing a segment void PlaySegment(IDirectMusicPerformance8* dmPerf, IDirectMusicSegment8* dmSeg) { // play the segment on the next beat dmPerf->PlaySegmentEx(dmSeg, NULL, NULL, DMUS_SEGF_DEFAULT, 0, NULL, NULL, dmusic3DAudioPath); } // StopSegment() // desc: stop a segment from playing void StopSegment(IDirectMusicPerformance8* dmPerf, IDirectMusicSegment8* dmSeg) { // stop the dmSeg from playing dmPerf->StopEx(dmSeg, 0, 0); } // CloseDown() // desc: shutdown music performance void CloseDown(IDirectMusicPerformance8* dmPerf) { // stop the music dmPerf->Stop(NULL, NULL, 0, 0); // close down DirectMusic dmPerf->CloseDown(); } // Set3DSoundParams() // desc: sets the 3d buffer parameters void Set3DSoundParams(float doppler, float rolloff, float minDist, float maxDist) { // set doppler and rolloff parameters dsListenerParams.flDopplerFactor = doppler; dsListenerParams.flRolloffFactor = rolloff; if (ds3DListener) ds3DListener->SetAllParameters(&dsListenerParams, DS3D_IMMEDIATE); // set minimum and maximum distances dsBufferParams.flMinDistance = minDist; dsBufferParams.flMaxDistance = maxDist; if (ds3DBuffer) ds3DBuffer->SetAllParameters(&dsBufferParams, DS3D_IMMEDIATE); } // Set3DSoundPos() // desc: updates position of sound source (accepts OpenGL coordinates) void Set3DSoundPos(IDirectSound3DBuffer* dsBuff, float x, float y, float z) { // we use -z because DirectX and OpenGL z-axes are flipped if (dsBuff != NULL) { dsBuff->SetPosition(x, y, -z, DS3D_IMMEDIATE); } } sånn. litt mye kode. mvh. Fredrik Edit: Tror jeg fant det ut. er det den CoCreateInstance(CLSID_DirectMusicPerformance, NULL, CLSCTX_INPROC, IID_IDirectMusicPerformance8, (void**)&dmusicPerformance) som lager interfacen? Edit 2: da skal det vel ikke være noen feil? Endret 11. februar 2005 av Fredrik90 Lenke til kommentar
JBlack Skrevet 12. februar 2005 Del Skrevet 12. februar 2005 Jeg har kikka litt, kan ikke umiddelbart se noe som er feil. Linja du har trukket ut ser grei nok ut for meg. Bruk en debugger for å se hvor det kræsjer. Eller lag en logfil eller log til terminal. Men om du logger, ikke gjør tabben å brukke buffret output. Bruk f.x clog eller cerr eller flush() om du skriver til fil. Lenke til kommentar
Fredrik90 Skrevet 12. februar 2005 Forfatter Del Skrevet 12. februar 2005 hei igjen.... nå får jeg opp dette her. First-chance exception at 0x00405157 in Flight-Real.exe: 0xC0000005: Access violation reading location 0x00000000. Unhandled exception at 0x00405157 in Flight-Real.exe: 0xC0000005: Access violation reading location 0x00000000. The program '[1768] Flight-Real.exe: Native' has exited with code 0 (0x0). er det noen mulighet for at jeg kan ved og se på disse talene si noe om når i koden det skjer. tidlig, sent, midt i osv. eller er dette helt umulig? mvh. Fredrik Lenke til kommentar
Dead_Rabbit Skrevet 12. februar 2005 Del Skrevet 12. februar 2005 Bruk gdb! gdb programnavn gdb run gdb backtrace Burde vel gå.. Eller da kan du ihvetfall finne ut av litt.. Lenke til kommentar
Fredrik90 Skrevet 12. februar 2005 Forfatter Del Skrevet 12. februar 2005 et søk på google ga meg denne http://www.gnu.org/software/gdb/gdb.html var det den du mente? Lenke til kommentar
☀ ❄ Skrevet 12. februar 2005 Del Skrevet 12. februar 2005 Jepp, det var den han mente. Lenke til kommentar
Fredrik90 Skrevet 12. februar 2005 Forfatter Del Skrevet 12. februar 2005 (endret) lastet ned 5.3 og finner bare en batch fil kalt "djunpack" så hvor finner jeg selve programet som jeg kan gi input til? edit: lurer fortsatt på det. men dette går? char *screen_name = "test someting"; Endret 12. februar 2005 av Fredrik90 Lenke til kommentar
☀ ❄ Skrevet 12. februar 2005 Del Skrevet 12. februar 2005 Det kan virke som at "djunpack" er et program som pakker ut eller installerer gdb. Jeg har aldri installert gdb i Windows, så jeg vet ikke sikkert. Har du ikke noe dokumentasjon du kan lese? Angående koden: Det går, men så fort du sier screen_name = "Oj, dette var en litt for lang tekststreng!\n"; har du et problem... Lenke til kommentar
Fredrik90 Skrevet 13. februar 2005 Forfatter Del Skrevet 13. februar 2005 (endret) hei... denne her er riktig ikke sant? CoCreateInstance(CLSID_DirectMusicPerformance, NULL, CLSCTX_INPROC, IID_IDirectMusicPerformance8, (void**)&dmusicPerformance) når jeg bruker den så returnerer den en error. ikke syntax men når programet kjører. så er den riktig? mvh. Fredrik edit: sånn her ser hele ut. if (FAILED(CoCreateInstance(CLSID_DirectMusicLoader, NULL, CLSCTX_INPROC, IID_IDirectMusicLoader8, (void**)&dmusicLoader))) { MessageBox(hwnd, "Unable to create the IDirectMusicLoader8 object!\nPress OK to exit", "ERROR!", MB_OK); return false; } edit 2: ved og komentere ut return false så har jeg funnet ut at det er denne her som forårsaker feil. if (FAILED(dmusicPerformance->InitAudio(NULL, NULL, NULL, DMUS_APATH_DYNAMIC_STEREO, 64, DMUS_AUDIOF_ALL, NULL))) { MessageBox(hwnd, "Unable to initialize audio! Press OK to exit", "ERROR!", MB_OK); //return false; } eller der kommer ikke meldingsboksen opp, det bare klikker.... så noen som vet? feilen over er fortsatt feil for og si det sånn. Endret 13. februar 2005 av Fredrik90 Lenke til kommentar
Fredrik90 Skrevet 13. februar 2005 Forfatter Del Skrevet 13. februar 2005 kan hende noen har lest uten og få med seg editene for de kom sent. så jeg lager denne posten her som en form for bump.... Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå