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.
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-
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.
Project -> eka_oma_SDL_kokeilu Properties -> Gonfiquration Properties -> C/C++ -> Code Generation -> Runtime Library
pitää laitta kohtaan: Multi-threaded DLL (/MD)
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!
Aihe on jo aika vanha, joten et voi enää vastata siihen.