Oon ajatellut siirtyä SDL:n käyttöön C++:ssa, mutta:
Kun ajoin SDL-oppaan ensimmäisen esimerkkikoodin niin heti tuli virheilmoitus:
--------------------Configuration: SDL2 - Win32 Debug-------------------- Linking... LINK : warning LNK4001: no object files specified; libraries used LINK : error LNK2001: unresolved external symbol _WinMainCRTStartup Debug/SDL2.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe. SDL2.exe - 2 error(s), 1 warning(s)
olen asentanut SDL-asennusoppaan mukaisesti VC++:lle SDL:n
Voisiko joku neuvoa tässä
Sir Napi Von Leonarven
ootko linkannu projektis oikein? mingw:llä vaatii aineski -lmingw32 -lsdlmain -lsdl -lipukkeet. Joten jospa kokeilisit kirjoittaa projektiisi -lsdlmain ja -lsdl.
En oo ihan varma mitä tarkoitit, mutta jos tarkoitit että projektini alussa pitäisi olla rivit
#pragma comment(lib, "SDLmain.lib") #pragma comment(lib, "SDL.lib")
Niin ne ovat
Mulla on muuten VC++ 6.0
Eikö VC tarvitse linkkauksia? Kokeile etsiä project-tyylinen ylävalikko ja katsella, että löytyisikö sieltä jotain link-sanaan viittaavaa.
Ei löydy Projects valikosta mitään joka voisi liittyä linkkaamiseen
Tuolla SDL-oppaassa lukee:
Alussa on #pragma-rivejä. Ne ovat VisualC++:n omaa "standardia" eivätkä toimi muilla kääntäjillä. VC++:n käyttäjille tämä on kätevää, sillä näiden rivien ollessa mukana ei sinun tarvitse enään hakea valikoista lib-tiedostoja (katso asennusopas). GCC:llä parametri -lSDL ajaa saman asian.
Oho, no sitten en tiedä, mitä puhun. Sori :)
Tuo ensimmäinen varoitus näyttäisi minusta siltä, että olet nyt kääntämässä väärää asiaa. Microsoftin virheilmoitukset nyt toisinaan menevät vähän päin honkia, mutta tuossa nähdäkseni sanotaan, ettei linkitettävänä ole yhtään objektia (koodin kääntämisen tulosta). Kuvittelisin, että tarvitset ehkä projektin, johon kooditiedostosi kuuluu. Onhan tämä varmasti kunnossa? Lisäksi projektin asetuksista kuuluu valita oikea malli ajonaikaiselle kirjastolle... Haku kertoi näin:
Project -> [Nimi] Properties -> Gonfiquration Properties -> C/C++ -> Code Generation -> Runtime Library: Multi-threaded DLL (/MD)
Jos kyse ei ollut tästä, voisit etsiä Help-toiminnolla tai Googlella tuon funktion WinMainCRTStartup tiedot ja linkittää itse mukaan oikean tiedoston (projektin asetuksista jostakin linkkerikohdasta Additional Libraries tjsp.).
Kaikki noi on kunnossa ajonaikaisia kirjastoja myöten
Koita laittaa Project->Properties->Linker->Advanced->Entry Point: SDL_main
Itselläni ongelmaa ei esiintynyt kunnes poistin rivin #pragma comment(lib, "SDLmain.lib"). Rivin poistaminen aiheutti samankaltaiset virheet (mutta ei warningia).Entry pointin määrääminen ainakin ratksisi minulla ongelman.
Aihe on jo aika vanha, joten et voi enää vastata siihen.