Eikkä. tätä ohjetta olen käyttänyt:
http://pgdc.purdue.org/sdltutorial/sdl_setup.
Ja tämmönen pätkä sanottu:
#ifdef WIN32
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDLmain.lib")
#endif
#include "SDL.h"
int main(int argc, char **argv)
{
printf("\nHello SDL User!\n");
/* initialize SDL */
if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )
{
fprintf( stderr, "Video initialization failed: %s\n",
SDL_GetError( ) );
SDL_Quit( );
}
SDL_Quit( );
return 0;
}
Kun yritän kääntää, Visual C++ valittaa:
--------------------Configuration: Dos - Win32 Debug--------------------
Linking...
msvcrt.lib(MSVCRT.dll) : error LNK2005: _exit already defined in LIBCD.lib(crt0dat.obj)
msvcrt.lib(MSVCRT.dll) : error LNK2005: _strncpy already defined in LIBCD.lib(strncpy.obj)
msvcrt.lib(MSVCRT.dll) : error LNK2005: _fprintf already defined in LIBCD.lib(fprintf.obj)
msvcrt.lib(MSVCRT.dll) : error LNK2005: _fclose already defined in LIBCD.lib(fclose.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/Dos.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
Dos.exe - 6 error(s), 1 warning(s)
Kun en ole V C++:lla enkä SDL juurikaan tehnyt, en osaa sanoa tuohon mitään..
Et voinut käyttää kooditageja ?
Luepa se ohjeesi vielä rivi riviltä uudestaan.
Tällainen kohta sieltä löytyy:
Ohje kirjoitti:
Right-click on the name of your project in the Solution explorer and select "Properties". - - Select the "code Generation" on the left. On the right, select the "Runtime Library" pull down menu and choose Multi-Threaded DLL or Multi-Threaded Debug DLL if you wish to use debugging. Hit OK.
Nyt se valittaa: "SDL.dll not found". Olen laittanut sen filun näkyviin VC++:lle, mutta ei auta.
Laita nyt hyvä mies se SDL.dll siihen kansioon missä se (oman) ohjelmasi exe on!
Edit: Tällälailla siellä ohjeessakin lukee:
lainaus:
You need to copy the SDL.dll file from the lib directory (C:\LIB_SDL\SDL-1.2.5\lib) to your Debug directory where your freshly bulit executable now lays (c:\SDL_Test\SDL_Test\Debug) so the program may run.
Edit2: Kylläs se ohje kannattaa lukea kunnolla :)
Nyt oon saanut pari tutorialin pätkää toimimaan, mutta putkalaisten esimerkissä valittaa esim:
warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
warning C4244: '=' : conversion from 'float' to 'int', possible loss of data
Tuommosia tulee kymmänittäin
warning = varoitus
Mitäpä jos opettelisit englantia ja miettisit mitä tuo virhe tarkoittaa. Sitten voit katsoa, mitä eroa on tyypeillä double ja float. Olisitko niin kiltti, että yrittäisit edes hieman ajatella itse ennen kuin kysyt täällä? Vai etkö tosiaan ymmärrä tuollaisia asioita vaikkapa valmiiden oppaiden avulla?
Edit: Autetaanpa nyt vielä vähän.
conversion from 'float' to 'int', possible loss of data
= muunnos tyypistä float tyyppiin int, mahdollinen tietojen menetys
Tarkoittaa käytännössä, että koska float on desimaaliluku ja int kokonaisluku, joudutaan tuossa jättämään luvun desimaaliosa pois.
conversion from 'double' to 'float', possible loss of data
= muunnos tyypistä double tyyppiin float, mahdollinen tietojen menetys
Tarkoittaa käytännössä, että koska float on tarkkuudeltaan pienempi kuin double, saattaa luvun tarkkuus pienentyä muunnoksessa.
Kyllähän minä englantia osaan, mutta lähinnä en osaa käyttää vielä kunnolla VC++:ssaa.
En tiedä, miten saan VC++:n yksinkertaisesti hyväksymään tietojen menetystä, vai voiko sitä tehdä ollenkaan.
Olen iloinen, että olette näinin kauan opastanut :)
Typekastaat sen luvun vaan esim. juuri flotariksi -- eli kerrot kääntäjälle että tiedät kyllä että double on floattia tarkempi -- tähän tyyliin:
float a; double b = 45.3f; a = (float)b;
EDIT:
Jos lähdekoodissa on yksinkertaisesti esimerkiksi "a = 45.7" (missä a on float) niin voit kertoa kääntäjälle että 45.7 on float-tyyppinen myös lisäämällä perään f:n, eli "45.7f".
Toinen vaihtoehto on vain lisätä koodin alkuun seuraava:
#pragma warning(disable: 4244)
Tämä ilmoittaa kääntäjälle, että virheestä ei tarvitse huomauttaa. Huono puoli on, että jos tekeekin oikeasti virheen, niin kääntäjä ei varoita siitä. (4244 on siis kyseisen virheen numero VC++:ssa)
Edit: sori tuo edellinen viesti
Aihe on jo aika vanha, joten et voi enää vastata siihen.