Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Ongelma SDL:ssa

Sivun loppuun

leonarven [05.06.2007 22:02:04]

#

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

tgunner [05.06.2007 22:03:11]

#

ootko linkannu projektis oikein? mingw:llä vaatii aineski -lmingw32 -lsdlmain -lsdl -lipukkeet. Joten jospa kokeilisit kirjoittaa projektiisi -lsdlmain ja -lsdl.

leonarven [05.06.2007 22:10:21]

#

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

tgunner [05.06.2007 22:17:40]

#

Eikö VC tarvitse linkkauksia? Kokeile etsiä project-tyylinen ylävalikko ja katsella, että löytyisikö sieltä jotain link-sanaan viittaavaa.

leonarven [05.06.2007 22:46:08]

#

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.

tgunner [05.06.2007 23:07:55]

#

Oho, no sitten en tiedä, mitä puhun. Sori :)

Metabolix [06.06.2007 08:32:51]

#

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.).

leonarven [06.06.2007 09:10:00]

#

Kaikki noi on kunnossa ajonaikaisia kirjastoja myöten

Pöytälamppu [06.06.2007 13:24:54]

#

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.


Sivun alkuun

Vastaus

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

Tietoa sivustosta