Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VC++ ja SDL -ongelma

TsaTsaTsaa [11.12.2006 17:55:16]

#

Moro.

Rupesin tutustumaan SDL:n ihmeelliseen maailmaan täältä löytyvän oppaan avulla, mutta en pitkälle päässyt, kun jo tuli seinä vastaan.

Eli olen asentanut SDL:t kunnolla ja jonkin koodivinkeissä olleen jutun sain käännettyäkin, mutta seuraava, heti oppaan alussa esitelty koodi ei ota kääntyäkseen millään:

#include <cstdlib>
#include <iostream>
#include <SDL/SDL.h>

#pragma comment(lib, "SDLmain.lib")
#pragma comment(lib, "SDL.lib")



int main(int argc, char *argv[]) {

	//Alustetaan SDL
	if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) {  //jos paluuarvo on alle 0, on tapahtunut virhe
		std::cout << "Alustaminen epäonnistui: " << SDL_GetError() << std::endl;
		return 1;
	}

	SDL_Surface * naytto;
	naytto = SDL_SetVideoMode(1024, 768, 32, SDL_HWSURFACE|SDL_FULLSCREEN|SDL_DOUBLEBUF);

	//TÄHÄN KAIKKI JÄYNÄT

	SDL_Delay(5000);


	SDL_Quit();	//Suljetaan SDL
	return 0;
}

Virheilmoitukset:

--------------------Configuration: eka_oma_SDL_kokeilu - Win32 Debug--------------------
Linking...
msvcrt.lib(MSVCRT.dll) : error LNK2005: _exit already defined in LIBCD.lib(crt0dat.obj)
msvcrt.lib(MSVCRT.dll) : error LNK2005: _fgetc already defined in LIBCD.lib(fgetc.obj)
msvcrt.lib(MSVCRT.dll) : error LNK2005: _fclose already defined in LIBCD.lib(fclose.obj)
msvcrt.lib(MSVCRT.dll) : error LNK2005: _setvbuf already defined in LIBCD.lib(setvbuf.obj)
msvcrt.lib(MSVCRT.dll) : error LNK2005: __isctype already defined in LIBCD.lib(isctype.obj)
LIBCD.lib(crt0init.obj) : warning LNK4098: defaultlib "msvcrt.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
Debug/eka_oma_SDL_kokeilu.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.

eka_oma_SDL_kokeilu.exe - 6 error(s), 1 warning(s)

Sitten kun kirjoitin projektin asetuksiin: /nodefaultlib:"msvcrt.lib", tuli tämmöinen litania:

--------------------Configuration: eka_oma_SDL_kokeilu - Win32 Debug--------------------
Linking...
LINK : warning LNK4049: locally defined symbol "_exit" imported
LINK : warning LNK4049: locally defined symbol "__iob" imported
LINK : warning LNK4049: locally defined symbol "_fgetc" imported
LINK : warning LNK4049: locally defined symbol "_fclose" imported
LINK : warning LNK4049: locally defined symbol "_setvbuf" imported
LINK : warning LNK4049: locally defined symbol "__pctype" imported
LINK : warning LNK4049: locally defined symbol "___mb_cur_max" imported
LINK : warning LNK4049: locally defined symbol "__isctype" imported
SDLmain.lib(SDL_win32_main.obj) : error LNK2001: unresolved external symbol __imp__strrchr
SDLmain.lib(SDL_win32_main.obj) : error LNK2001: unresolved external symbol __imp__fprintf
SDLmain.lib(SDL_win32_main.obj) : error LNK2001: unresolved external symbol __imp__remove
SDLmain.lib(SDL_win32_main.obj) : error LNK2001: unresolved external symbol __imp__fopen
SDLmain.lib(SDL_win32_main.obj) : error LNK2001: unresolved external symbol __imp__setbuf
SDLmain.lib(SDL_win32_main.obj) : error LNK2001: unresolved external symbol __imp__freopen
Debug/eka_oma_SDL_kokeilu.exe : fatal error LNK1120: 6 unresolved externals
Error executing link.exe.

eka_oma_SDL_kokeilu.exe - 7 error(s), 8 warning(s)

En ymmärrä ollenkaan.

Grey [11.12.2006 18:06:22]

#

En tiedä C-sukulaisista kielistä, mutta sen vertaa osaisin neuvoa että kokeilehan poistaa kaikki Includet, mitkä eivät liity SDL:n. Saattaa olla että SDL:n omissa onkin jo määritetty tarpeellisia asioita..

-Grey-

Metabolix [11.12.2006 18:07:15]

#

Oletko valinnut Runtime Libraries -kohdasta tai mistä lie asetuksen "Multithreaded Debug"? En osaa tarkemmin paikkaa neuvoa, mutta jokin sellainen asetus VC++:ssa muistaakseni piti hoitaa kohdalleen.

Lahha [11.12.2006 18:14:47]

#

Project -> eka_oma_SDL_kokeilu Properties -> Gonfiquration Properties -> C/C++ -> Code Generation -> Runtime Library
pitää laitta kohtaan: Multi-threaded DLL (/MD)

TsaTsaTsaa [11.12.2006 18:18:49]

#

Metabolix kirjoitti:

Oletko valinnut Runtime Libraries -kohdasta tai mistä lie asetuksen "Multithreaded Debug"? En osaa tarkemmin paikkaa neuvoa, mutta jokin sellainen asetus VC++:ssa muistaakseni piti hoitaa kohdalleen.

Jep, tämä auttoi. Kiitos!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta