I have received a library in dll format with a .h header file. When I instantiate an object from one of the classes I get an access violation error. It is a run time error; the program compiled bug free. The program even runs. It is just at the exact instant that the command to instantiate (or point if I should use a pointer ) executes, then the access violation occurs.

I am using MS Visual C++ express edition. Windows help says that this error occurs when an ATL Composite control attempts to create a licenced control. This usually only happens on computers without visual C++ installed on them. Could this be because the origional programmer used Visual C++ proffesional edition and now I am using express edition? Or is it something else entirely.

9 Years
Discussion Span
Last Post by Basicgear

The value 0xcccccc usually is an uninitialized or bad variable. Its not likely that its the compiler difference, but, if the control is a licensed control then I suspect because the DLL was not installed properly on your computer. If that's not the case then I have no idea about the problem.


im having a similar problem with access violations.

Im following a tutorial over SDL. It seems like 'screen' and 'background' are being initialized wrong but I dont know what I can do to correct it. here is the full code...

//The headers
#include "SDL.h"
#include <string>

//The attributes of the screen
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;

//The surfaces that will be used
SDL_Surface *message = NULL;
SDL_Surface *background = NULL;
SDL_Surface *screen = NULL;

SDL_Surface *load_image(std::string filename)
	//Temporary storage for the image that's loaded
	SDL_Surface* loadedImage = NULL;

	//The optimized image that will be used
	SDL_Surface* optimizedImage = NULL;

	//Load the image
	loadedImage = SDL_LoadBMP(filename.c_str());

	//If nothing went wrong in loading the image
    if( loadedImage != NULL )
        //Create an optimized image
        optimizedImage = SDL_DisplayFormat( loadedImage );
        //Free the old image
        SDL_FreeSurface( loadedImage );

	//Return the optimized image
	return optimizedImage;

void apply_surface(int x, int y, SDL_Surface* source, SDL_Surface* destination)
	//Make a temporary rectangle to hold the offsets
	SDL_Rect offset;

	//Give the offsets to the rectangle
	offset.x = x;
	offset.y = y;

	//Blit the surface
	SDL_BlitSurface(source, NULL, destination, &offset);

int main(int argc, char* args[])
	//Initialize all SDL subsystems
		return 1;

	//Set up the screen

	//If there was an error in setting up the screen
	if(screen = NULL)
		return 1;

	//Set the window caption
	SDL_WM_SetCaption("Hello World 2",NULL);
	//Load the images
	message = load_image("hello_world.bmp");
	background = load_image("background.bmp");

	//Apply the background to the screen

	//Apply the message to the screen
	//apply_surface(180, 140, message, screen);

	//Update the screen
    if( SDL_Flip( screen ) == -1 )
        return 1;    

	//Wait 3 seconds

	//Free the surfaces

	//Quit SDL

	return 0;

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.