I was wondering if anyone could help with a problem I'm having.

My program compiles properly, and has all up-to-date files and DLLs (SDL2, SDL2-image, SDL2-ttf, all the other DLLs that are required by these). However, when I run it, I get "object.Error: Access Violation", which, of course, means something isn't getting created.

I'm using dub to build (although I get the same problem when trying to build manually).

My main program looks like this:

---


void main (string[] args){
        Window window;
        JSONValue cfg;
        Input input;
        
        try{
                window = new Window ();
                cfg = loadConfig;
                
window.create (cfg["window"]["caption"].str, to!int (cfg["window"]["width"].integer), -1, -1, to!int (cfg["window"]["height"].integer), (cfg["window"]["windowed"].type == JSON_TYPE.FALSE) ? true : false );
                window.releaseMouse;
                
                input = window.getInput ();
        }
        catch(Error e){
                writeln ("error occurred before timing variable setup");
                return;
        }
        
        
        
        // set up timing variables
        auto duration = TickDuration (cfg["graphics"]["ticks"].integer);
        
        auto current_tick = Clock.currAppTick;
        auto target_tick = current_tick + duration;
        auto target_margin = target_tick + (duration/2);
        
        // main loop
        try{
                while (!window.is_dead){
                        auto keys = input.getKeyboardState ();
                        
/// TODO: there is a range error occurring in keys.keys when holding down left alt. Check for other modifier keys if (/*(keys.mods & KeyMods.LeftAlt)*/keys.scans[ScanCode.LeftAlt] && keys.scans[ScanCode.F4]){
                                window.destroy;
                                break;
                        }
                        
                        current_tick = Clock.currAppTick;
                        if (current_tick >= target_tick){
// this way, it will wait for the next frame, if there is less than half the time to the next frame left
                                if (current_tick < target_margin){
                                        // update graphics and physics
                                }
                                // prep for next tick
                                target_tick += duration;
                                target_margin += duration;
                        }
                        
                }
        }
        catch(Error e){
                writeln ("error occurred during main loop");
        }
}

---

Both Window and Input are my own classes, which I've checked for leaks, and don't appear to have any. They are basically wrappers around SDL functionality. I can include the source if people want, but it's pretty long.

The try-catch blocks were put in to see if I could track down which part of the code the error's occurring in, which is why I believe it to be happening before main() is called.

I'd appreciate any help that you guys can give, and many thanks in advance.

Reply via email to