Bonjour,
Je d�sire utiliser la librairie SDL via l'IDE codeBlocks avec le compilateur VC ToolKit 2003.
Apr�s de multiples essais, impossible d'utiliser la librairie (probl�mes de linkage ou de param�trage).
Voici la description de mon install :
I ] Les repertoires d'installation des composants :
1 ) Codeblocks (sans MingGw) :
path : C:\CodeBlocks
2 ) VcToolkit 2003 :
path : C:\VCToolkit2003
3 ) .NET 1.1 SDK :
path : C:\Program Files\Microsoft.NET\SDK\v1.1
4 ) Platform SDK :
path : C:\PlatformSDK
5 ) DirectX SDK :
path : C:\dxsdk
II ] Les param�tres dans codeBlocks :
1 ) Menu "Settings" > "compiler" > onglet "directories" > sous onglet "compiler" :
- C:\VCToolkit2003\include
- C:\PlatformSDK\Include
- C:\Program Files\Microsoft.NET\SDK\v1.1\include
- C:\dxsdk\Include
1.1 ) Menu "Settings" > "compiler" > onglet "directories" > sous onglet "linker" :
- C:\VCToolkit2003\lib
- C:\Program Files\Microsoft.NET\SDK\v1.1\Lib
- C:\PlatformSDK\Lib
- C:\dxsdk\Lib
2 ) Menu "Settings" > "compiler" > onglet "programs" :
> compiler installation directory :
path : C:\VCToolkit2003\
2.1 ) Menu "Settings" > "compiler" > onglet "programs" > sous onglet "Program Files" :
- c compiler : cl.exe (situ� dans : C:\VCToolkit2003\bin)
- c++ compiler : cl.exe (situ� dans : C:\VCToolkit2003\bin)
- linker for dynamic libs : link.exe (situ� dans : C:\VCToolkit2003\bin)
- linker for static libs : link.exe (situ� dans : C:\VCToolkit2003\bin)
- ressource compiler : RC.Exe (situ� dans : C:\PlatformSDK\Bin)
- Make Program : nmake.exe (situ� dans : C:\PlatformSDK\Bin)
2.1 ) Menu "Settings" > "compiler" > onglet "programs" > sous onglet "Other" :
- compiler logging : Full command line
- build method : Invoke compiler directly
- Shell to run console programs : xterm -T $TITLE -e
2.2 ) param�tres SDL :
- fichiers ".h" : C:\VCToolkit2003\include\sdl\
- fichier "SDL.lib" : C:\VCToolkit2003\lib\SDL.lib
- fichier "SDLmain.lib" : C:\VCToolkit2003\lib\SDLmain.lib
III ] Mon projet SDL
1 ) Projet g�n�r� avec le template SDL de codeBlocks (avec creation automatique de fichier "main.cpp")
2 ) Param�tres du projet :
- Nom du projet : "sdlapp" (C:\projHuit\sdlapp.cbp)
- r�pertoire du projet et des sources : C:\projHuit (contenant "SDL.dll")
- Type : "GUI Apllication"
- Output File name : "sdlapp.exe"
- Execution Working Dir : "."
- Objects Output Dir : ".objs" (situ� dans : C:\projHuit)
- Files : "main.cpp" (situ� dans : C:\projHuit), "cb.bmp" (situ� dans : C:\projHuit)
2.1 ) Target Build Options :
- selected compiler : Microsoft Visual C++ 2003
- policy : "append target options to project options"
- onglet "compiler flags" : "disable optimisation" coch� uniquement
- policy : "append target options to project options"
- onglet "linker" > "link libraries" : "SDL" & "SDLmain"
- policy : "append target options to project options"
- onglet "directories" > "compiler" : policy : "append target options to project options"
- onglet "directories" > "linker" > : policy : "append target options to project options"
- onglet "directories" > "ressource compiler" > : policy : "use project options only"
- onglet "commands" et "custom variables" : vides
IV ] Le fichier "main.cpp" g�n�r� par codeBlocks (code complet) :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 #ifdef __cplusplus #include <cstdlib> #else #include <stdlib.h> #endif #include <sdl/SDL.h> /*#ifdef WIN32 #pragma comment(lib, "SDL.lib") #pragma comment(lib, "SDLmain.lib") #endif */ int main ( int argc, char** argv ) { // initialize SDL video if ( SDL_Init( SDL_INIT_VIDEO ) < 0 ) { printf( "Unable to init SDL: %s\n", SDL_GetError() ); return 1; } // make sure SDL cleans up before exit atexit(SDL_Quit); // create a new window SDL_Surface* screen = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE|SDL_DOUBLEBUF); if ( !screen ) { printf("Unable to set 640x480 video: %s\n", SDL_GetError()); return 1; } // load an image SDL_Surface* bmp = SDL_LoadBMP("cb.bmp"); if (!bmp) { printf("Unable to load bitmap: %s\n", SDL_GetError()); return 1; } // center the bitmap on screen SDL_Rect dstrect; dstrect.x = (screen->w - bmp->w) / 2; dstrect.y = (screen->h - bmp->h) / 2; // program main loop bool done = false; while (!done) { // message processing loop SDL_Event event; while (SDL_PollEvent(&event)) { // check for messages switch (event.type) { // exit if the window is closed case SDL_QUIT: done = true; break; // check for keypresses case SDL_KEYDOWN: { // exit if ESCAPE is pressed if (event.key.keysym.sym == SDLK_ESCAPE) done = true; break; } } // end switch } // end of message processing // DRAWING STARTS HERE // clear screen SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 0, 0, 0)); // draw bitmap SDL_BlitSurface(bmp, 0, screen, &dstrect); // DRAWING ENDS HERE // finally, update the screen :) SDL_Flip(screen); } // end main loop // free loaded bitmap SDL_FreeSurface(bmp); // all is well ;) printf("Exited cleanly\n"); return 0; }
VI ] Build Logs :
Project : sdlapp
Compiler : Microsoft Visual C++ Toolkit 2003 (called directly)
Directory : C:\projects\projHuit\
--------------------------------------------------------------------------------
Switching to target: default
cl.exe /nologo /Od /Od /W3 /W4 /W3 /IC:\VCToolkit2003\include /IC:\PlatformSDK\Include /I"C:\Program Files\Microsoft.NET\SDK\v1.1\include" /IC:\dxsdk\Include /c main.cpp /Fo.objs\main.obj
main.cpp
cl : Command line warning D4025 : overriding '/W3' with '/W4'
cl : Command line warning D4025 : overriding '/W4' with '/W3'
link.exe /nologo /subsystem:windows /LIBPATH:C:\VCToolkit2003\lib /LIBPATH:"C:\Program Files\Microsoft.NET\SDK\v1.1\Lib" /LIBPATH:C:\PlatformSDK\Lib /LIBPATH:C:\dxsdk\Lib /out:sdlapp.exe SDLmain.lib SDL.lib .objs\main.obj /NODEFAULTLIB:msvcrt.lib
SDLmain.lib(SDL_win32_main.obj) : warning LNK4217: locally defined symbol _exit imported in function _main
SDLmain.lib(SDL_win32_main.obj) : warning LNK4217: locally defined symbol __iob imported in function _ShowError
SDLmain.lib(SDL_win32_main.obj) : warning LNK4217: locally defined symbol _fclose imported in function _cleanup_output
SDLmain.lib(SDL_win32_main.obj) : warning LNK4217: locally defined symbol __pctype imported in function _ParseCommandLine
SDLmain.lib(SDL_win32_main.obj) : warning LNK4217: locally defined symbol ___mb_cur_max imported in function _ParseCommandLine
SDLmain.lib(SDL_win32_main.obj) : warning LNK4217: locally defined symbol __isctype imported in function _ParseCommandLine
SDLmain.lib(SDL_win32_main.obj) : error LNK2019: unresolved external symbol __imp__strrchr referenced in function _main
SDLmain.lib(SDL_win32_main.obj) : error LNK2019: unresolved external symbol __imp__fprintf referenced in function _ShowError
SDLmain.lib(SDL_win32_main.obj) : error LNK2019: unresolved external symbol __imp__remove referenced in function _cleanup_output
SDLmain.lib(SDL_win32_main.obj) : error LNK2019: unresolved external symbol __imp__fopen referenced in function _cleanup_output
SDLmain.lib(SDL_win32_main.obj) : error LNK2019: unresolved external symbol __imp__fgetc referenced in function _cleanup_output
SDLmain.lib(SDL_win32_main.obj) : error LNK2019: unresolved external symbol __imp__setbuf referenced in function _WinMain@16
SDLmain.lib(SDL_win32_main.obj) : error LNK2019: unresolved external symbol __imp__setvbuf referenced in function _WinMain@16
SDLmain.lib(SDL_win32_main.obj) : error LNK2019: unresolved external symbol __imp__freopen referenced in function _WinMain@16
sdlapp.exe : fatal error LNK1120: 8 unresolved externals
Process terminated with status 1 (0 minutes, 2 seconds)
9 errors, 6 warnings
VII ] Question :
Mes param�tres semblent de linkage corrects d'ou peux provenir l'erreur, quelles sont les pistes � explorer ?
Merci d'avance (ps : mon choix se porte uniquement sur le compilateur Microsoft... pour l'instant)
![]()
Partager