[SDL&Borland C++]Compiler vindt SDL niet

Pagina: 1
Acties:

  • Oogst
  • Registratie: Juli 2001
  • Laatst online: 04-01 21:29
Volgens de programming en webscripting-policy moet ie hier, dus vraag ik dit hier.

Ik probeer met de Borland C++ 5.5 command line compiler SDL 1.2.6 (Simple DirectMedia Library) aan de gang te krijgen op Windows XP en dat wil niet bepaald lukken.

Voorlopig wordt ie nog niet gebruikt in mijn programmaatje dat ik probeer te compilen, ik heb alleen nog de regel #include "SDL.h" erin staan om te proberen hem aan de gang te krijgen.

De compiler geeft bij het compilen daarvan de volgende error:
code:
1
Error: Unresolved external '_main" referenced from C:\PROGRAM FILES\BORLAND C++ 5.5\LIB\C0X32.OBJ


Ik heb geen flauw idee wat deze fout is, maar het heeft in ieder geval met SDL te maken, want bij verwijdering van die include gaat alles goed en kan ik ook gewoon de simpele cin- en cout-progjes maken, dus Borland is goed afgesteld voor de rest (lijkt me).

Wat ik tot nog toe gedaan heb om hem aan de gang te krijgen:

1. De Borland command-line compiler gedownload en uitgepakt.

2. Deze instructies uitgevoerd.

3. Deze SDL-file gedownload en uitgepakt.

4. De file .\SDL-1.2.6\Borland.zip daaruit uitgepakt.

5. In de map .\SDL-1.2.6\Borland\freebcc de instructies uitgevoerd uit .\SDL-1.2.6\Borland.html, dat was het aanroepen van deze commando's: make -f SDL.mak en make -f SDLmain.mak. Nu verscheen er bij SDLmain.mak een error:
code:
1
Warning: 'SDL_main" not found in library


6. Uit de map .\SDL1.2.6\test de files SDL.lib en SDL.dll in de map van mijn project gezet en in de Borland C++ 5.5\lib-map van mijn Borland-compiler.

7. Aangezien de file .\SDL-1.2.6\test\SDLmain.lib ontbrak heb ik nu de file SDL-1.2.6\Borland\lib\SDLmain.lib gebruikt en ook op die twee plekken geplaatst.

8. Wanneer ik nu mijn programmaatje probeer te compilen, mist ie de file "SDL.h"

9. Vervolgens heb ik in de Borland-file bcc32.cfg de entry met de include aangepast om ook de .h-files uit de SDL-zip toe te voegen:
code:
1
-I"C:\Program Files\Borland C++ 5.5\include";"C:\Downloads\SDL-1.2.6\include"


10. Nu kwam die error die helemaal bovenaan al genoemd werd met die unresolved external.

11. Vervolgens heb ik ook nog alle files uit de map SDL-1.2.6\Borland\lib gecopieerd naar zowel de map van mijn project als die van .\Borland C++ 5.5\lib.

12. Nog steeds dezelfde error.

13. Op Google heb ik vervolgens een aantal links gevonden naar nieuwsgroepen waar problemen die vergelijkbaar leken werden besproken, maar hier snapte ik werkelijk geen hout van. Ik kon ook niks relevants vinden voor zowel mijn foutmelding als SDL. Zonder SDL kwam die foutmelding wel voor, maar dat maakte het niet duidelijker bij mij.

14. Een vriend van mij die SDL in Visual Studio 6 aan de gang had gekregen heb ik er ook nog een hele tijd mee lastig gevallen, maar die kwam er ook niet uit.

15. En ik heb het hele proces een keer of 5 opnieuw uitgevoerd, elke keer met hetzelfde resultaat.

Oftewel: ik kom er absoluut niet meer uit. Kan iemand me hier mee helpen?

Devblog / portfolio
Swords & Soldiers
Awesomenauts
Proun
Cello Fortress


  • Oogst
  • Registratie: Juli 2001
  • Laatst online: 04-01 21:29
*Subtiele schop*

Niemand enig idee? Ik kom er echt niet uit.

Hij is een dag zonder één reactie, dus dan mag dat.

Devblog / portfolio
Swords & Soldiers
Awesomenauts
Proun
Cello Fortress


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:16
Heb je aangegeven dat je linker die library moet meelinken?

https://fgheysels.github.io/


  • Oogst
  • Registratie: Juli 2001
  • Laatst online: 04-01 21:29
Hoe geef ik dat aan? Is dat dat ik heb aangegeven in welke map mijn libraries staan in die .CFG-file?

Devblog / portfolio
Swords & Soldiers
Awesomenauts
Proun
Cello Fortress


Verwijderd

Ik zat met hetzelfde probleem als jij.
Kijk eens op http://bdn.borland.com/article/0,1410,27343,00.html
Misschien wordt je daar wat wijzer van.
Succes!

  • nwagenaar
  • Registratie: Maart 2001
  • Laatst online: 20:13

nwagenaar

God, root. What's the differen

Volgens mij moet je ook een aparte lib mee compilen (sdlmain) en definen dat de main staat in sdlmain. Kun je deze informatie niet vinden op de sdl website (http://www.libsdl.org) in de FAQ?

Overigens is msys, mingw en sdl een betere combinatie en bovendien nog gratis ook ;) Deze combinatie is meestal foolproof en werkt perfect.

edit:
Even wat informatie uit de Windows FAQ vanaf hier
Chris Dion wrote down his steps on building manually with the free command line tools:


Run the IMPLIB utility on SDL.DLL to make a new SDL.LIB import library. Use the -a and -c switches.
You still need the SDL_MAIN.LIB file, so that you don't need to define WinMain() and all that junky windows stuff. You have no .dll file to build this .lib from, and COFF2OMF creates a empty .lib (you can check with TDUMP, another utillity that comes with the compiler). Get the Win32 version of the SDL_main.c file from the source, and dump it in with the rest of your project.
Compile your source (including SDL_main.c) into object files using BCC32 with the following compiler options:
-c (Don't link)
-tW (Create windows app)
-DWIN32 (Define WIN32, this is needed in the SDL_main.h file, and maybe others)
Link the.obj files together using ILINK32 with the following options:
-aa (Create windows app, sounds redundant, but...)
-Tpe (Target = windows exe)
-c (case sensitive linking, may be the default...)
and the following additional files (order is important)
sdl.lib (created in step 1)
import32.lib
c0w32.obj
cw32.lib

[ Voor 68% gewijzigd door nwagenaar op 09-12-2003 18:14 ]

Mijn Neo Geo MVS collectie

Pagina: 1