Exemplo n.º 1
0
/*
=================
Sys_GetGameAPI

Loads the game dll
=================
*/
void *Sys_GetGameAPI (void *parms)
{
	void	*(*GetGameAPI) (void *);

	const char *gamename;
#ifdef JK2_MODE
	gamename = "jospgame" ARCH_STRING DLL_EXT;
#else
	gamename = "jagame" ARCH_STRING DLL_EXT;
#endif

	if (game_library)
		Com_Error (ERR_FATAL, "Sys_GetGameAPI without Sys_UnloadingGame");

	game_library = Sys_RetrieveDLL(gamename);
	if(!game_library)
	{
		char *buf;

		FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &buf, 0, NULL );

		Com_Printf( "LoadLibrary(\"%s\") failed\n", gamename);
		Com_Printf( "...reason: '%s'\n", buf );
		Com_Error( ERR_FATAL, "Couldn't load game" );
	}

	GetGameAPI = (void *(*)(void *))GetProcAddress (game_library, "GetGameAPI");
	if (!GetGameAPI)
	{
		Sys_UnloadGame ();		
		return NULL;
	}
	return GetGameAPI (parms);
}
Exemplo n.º 2
0
/*
=================
Sys_GetGameAPI

Loads the game dll
=================
*/
void *Sys_GetGameAPI (void *parms)
{
	void	*(*GetGameAPI) (void *);

	const char *gamename;
#ifdef JK2_MODE
	gamename = "jospgame" ARCH_STRING DLL_EXT;
#else
	gamename = "jagame" ARCH_STRING DLL_EXT;
#endif

	if (game_library)
		Com_Error (ERR_FATAL, "Sys_GetGameAPI without Sys_UnloadingGame");

	game_library = Sys_RetrieveDLL(gamename);
	if(!game_library)
	{
		Com_Printf( "LoadLibrary(\"%s\") failed\n", gamename);
		Com_Printf( "...reason: '%s'\n", GetErrorString( GetLastError() ) );
		Com_Error( ERR_FATAL, "Couldn't load game" );
	}

	GetGameAPI = (void *(*)(void *))GetProcAddress (game_library, "GetGameAPI");
	if (!GetGameAPI)
	{
		Com_Printf( "Sys_GetGameAPI: Entry point not found in %s. Failed with system error code 0x%X.\n", gamename, GetLastError() );
		Sys_UnloadGame ();
		return NULL;
	}
	return GetGameAPI (parms);
}
Exemplo n.º 3
0
/*
=================
Sys_GetGameAPI

Loads the game dll
=================
*/
void *Sys_GetGameAPI (void *parms)
{
	void	*(*GetGameAPI) (void *);
#if defined _M_IX86
	const char *gamename;
	if(com_jk2 && com_jk2->integer)
	{
		gamename = "jk2gamex86.dll";
	}
	else
	{
		gamename = "jagamex86.dll";
	}

#ifdef NDEBUG
	const char *debugdir = "release";
#elif MEM_DEBUG
	const char *debugdir = "shdebug";
#else
	const char *debugdir = "debug";
#endif	//NDEBUG

#elif defined _M_ALPHA
	const char *gamename = "jagameaxp.dll";

#ifdef NDEBUG
	const char *debugdir = "releaseaxp";
#else
	const char *debugdir = "debugaxp";
#endif //NDEBUG

#endif //_M__IX86

	if (game_library)
		Com_Error (ERR_FATAL, "Sys_GetGameAPI without Sys_UnloadingGame");

	game_library = Sys_RetrieveDLL(gamename, debugdir);
	if(!game_library)
	{
		char *buf;

		FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &buf, 0, NULL );

		Com_Printf( "LoadLibrary(\"%s\") failed\n", gamename);
		Com_Printf( "...reason: '%s'\n", buf );
		Com_Error( ERR_FATAL, "Couldn't load game" );
	}

	GetGameAPI = (void *(*)(void *))GetProcAddress (game_library, "GetGameAPI");
	if (!GetGameAPI)
	{
		Sys_UnloadGame ();		
		return NULL;
	}
	return GetGameAPI (parms);
}