[C++ icm Directx]Blijf errors krijgen bij builden project

Pagina: 1
Acties:
  • 428 views sinds 30-01-2008
  • Reageer

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 29-11 23:30
Ik heb een boek aangeschaft van Andre Lamothe over game programming. Ik wil een start gaan maken met DirectX, kijken hoe ver of dat ik kom. Ik probeer het eerste voorbeeld te builden, alleen ik blijf errors krijgen. Ik hoop dat hier iemand is die me verder kan helpen:
- Installatie MSFT Visual Studio 2005
- Installatie directxsdk 9.0
- Voeg lib path toe aan directories.
- Voeg include path toe aan directories.
- Ik maak een nieuw project aan en voeg sources toe aan project.
- Pas de eigenschappen van project aan > iostream.h wordt iostream. (lost al wat problemen op)
- Character set -> Use Multi-Byte Character Set (lost nog meer problemen op)

Nu krijg ik de onderstaande errors:
Error 1 error LNK2019: unresolved external symbol _DirectDrawCreateEx@16 referenced in function "int __cdecl DD_Init(int,int,int)" (?DD_Init@@YAHHHH@Z) blackbox.obj
Error 2 error LNK2019: unresolved external symbol __imp__TextOutA@20 referenced in function "int __cdecl Draw_Text_GDI(char *,int,int,int,struct IDirectDrawSurface7 *)" (?Draw_Text_GDI@@YAHPADHHHPAUIDirectDrawSurface7@@@Z) blackbox.obj
Error 3 error LNK2019: unresolved external symbol __imp__SetBkMode@8 referenced in function "int __cdecl Draw_Text_GDI(char *,int,int,int,struct IDirectDrawSurface7 *)" (?Draw_Text_GDI@@YAHPADHHHPAUIDirectDrawSurface7@@@Z) blackbox.obj
Error 4 error LNK2019: unresolved external symbol __imp__SetTextColor@8 referenced in function "int __cdecl Draw_Text_GDI(char *,int,int,int,struct IDirectDrawSurface7 *)" (?Draw_Text_GDI@@YAHPADHHHPAUIDirectDrawSurface7@@@Z) blackbox.obj
Error 5 error LNK2019: unresolved external symbol __imp__DefWindowProcA@16 referenced in function "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z) freakout.obj
Error 6 error LNK2019: unresolved external symbol __imp__PostQuitMessage@4 referenced in function "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z) freakout.obj
Error 7 error LNK2019: unresolved external symbol __imp__EndPaint@8 referenced in function "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z) freakout.obj
Error 8 error LNK2019: unresolved external symbol __imp__BeginPaint@8 referenced in function "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z) freakout.obj
Error 9 error LNK2019: unresolved external symbol __imp__DispatchMessageA@4 referenced in function _WinMain@16 freakout.obj
Error 10 error LNK2019: unresolved external symbol __imp__TranslateMessage@4 referenced in function _WinMain@16 freakout.obj
Error 11 error LNK2019: unresolved external symbol __imp__PeekMessageA@20 referenced in function _WinMain@16 freakout.obj
Error 12 error LNK2019: unresolved external symbol __imp__ShowCursor@4 referenced in function _WinMain@16 freakout.obj
Error 13 error LNK2019: unresolved external symbol __imp__CreateWindowExA@48 referenced in function _WinMain@16 freakout.obj
Error 14 error LNK2019: unresolved external symbol __imp__GetSystemMetrics@4 referenced in function _WinMain@16 freakout.obj
Error 15 error LNK2019: unresolved external symbol __imp__RegisterClassA@4 referenced in function _WinMain@16 freakout.obj
Error 16 error LNK2019: unresolved external symbol __imp__GetStockObject@4 referenced in function _WinMain@16 freakout.obj
Error 17 error LNK2019: unresolved external symbol __imp__LoadCursorA@8 referenced in function _WinMain@16 freakout.obj
Error 18 error LNK2019: unresolved external symbol __imp__LoadIconA@8 referenced in function _WinMain@16 freakout.obj
Error 19 error LNK2019: unresolved external symbol __imp__MessageBeep@4 referenced in function "void __cdecl Process_Ball(void)" (?Process_Ball@@YAXXZ) freakout.obj
Error 20 error LNK2019: unresolved external symbol __imp__GetAsyncKeyState@4 referenced in function "void __cdecl Process_Ball(void)" (?Process_Ball@@YAXXZ) freakout.obj
Error 21 error LNK2019: unresolved external symbol __imp__PostMessageA@16 referenced in function "int __cdecl Game_Main(void *)" (?Game_Main@@YAHPAX@Z) freakout.obj
Error 22 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup MSVCRTD.lib
Error 23 fatal error LNK1120: 22 unresolved externals C:\AAV3\3d\Chap1\Debug\freakout.exe
Iemand enig idee? Ik weet zeker dat het met project configuratie te maken heeft, maar ik kan niks bruikbaars vinden op google. Gisteravond al een paar uur geklooi en nu alweer een paar uur.. ;(

http://hawvie.deviantart.com/


Verwijderd

HawVer schreef op maandag 02 juli 2007 @ 11:20:
Iemand enig idee? Ik weet zeker dat het met project configuratie te maken heeft, maar ik kan niks bruikbaars vinden op google. Gisteravond al een paar uur geklooi en nu alweer een paar uur.. ;(
Hmm, weet je zeker dat je het als win32 applicatie moet compileren?

Verder heb je genoeg directories toegevoegd aan de configuratie.
HawVer schreef op maandag 02 juli 2007 @ 11:20:
- Pas de eigenschappen van project aan > iostream.h wordt iostream. (lost al wat problemen op)
Hiermee bedoel je dat je de header niet in je projectmap had? Let er in ieder geval in dat als je een file in je projectmap hebt dat je het tussen "" zet en als deze in een include map zit tussen <>.

[ Voor 84% gewijzigd door Verwijderd op 02-07-2007 11:32 ]


  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 29-11 23:30
Verwijderd schreef op maandag 02 juli 2007 @ 11:27:
[...]

Hmm, weet je zeker dat je het als win32 applicatie moet compileren?
Ik denk het wel. O.a. windows.h wordt geinclude.
[...]
Hiermee bedoel je dat je de header niet in je projectmap had? Let er in ieder geval in dat als je een file in je projectmap hebt dat je het tussen "" zet en als deze in een include map zit tussen <>.
Ik had ergens op internet gelezen dat bij vs2005 de include van iostream zonder h moest..? De header files staan trouwens niet in mijn projectmap. Dus ik denk dat dat wel goed zit.

http://hawvie.deviantart.com/


Verwijderd

HawVer schreef op maandag 02 juli 2007 @ 11:39:
[...]

Ik denk het wel. O.a. windows.h wordt geinclude.

[...]

Ik had ergens op internet gelezen dat bij vs2005 de include van iostream zonder h moest..? De header files staan trouwens niet in mijn projectmap. Dus ik denk dat dat wel goed zit.
Dat windows.h wordt geinclude wil niet zeggen dat het een win32 applicatie is. Ik gebruik de windows.h headers wel vaker om van de windows apis gebruik te maken.
Probeer eens:
- MFC applicatie
- Console applicatie
- Clean project (weet niet je je voorbeeld importeerd)?

Kun je verder ook niets vinden als je op dat boek zoekt want misschien is het wel door de nieuwere versie van Visual Studio.

Verder wat jij zegt kan goed kloppen, ik gebruik zelf ook altijd <iostream> met dezelfde Visual Studio.

[ Voor 16% gewijzigd door Verwijderd op 02-07-2007 11:45 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op maandag 02 juli 2007 @ 11:27:
[...]

Hmm, weet je zeker dat je het als win32 applicatie moet compileren?
Aan de link errors te zien wel, echter wordt de app gecompileerd als console app waardoor hij naar
main() zoekt, die niet bestaat, aangezien WinMain() hier je entry point is. Je moet je project instellen als een win32 app (project properties -> Linker -> System, en dan SubSystem instellen als Windows)
Verder heb je genoeg directories toegevoegd aan de configuratie
Nou ik zie niet dat hij de dx9 libraries heeft toegevoegd aan z'n project.
Hiermee bedoel je dat je de header niet in je projectmap had? Let er in ieder geval in dat als je een file in je projectmap hebt dat je het tussen "" zet en als deze in een include map zit tussen <>.
Hiermee bedoelt ie dat het gebruik van de standaard C++ headers met .h extensie deprecated zijn (al een jaar of 10), en je die zonder extensie moet gebruiken :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

.oisyn schreef op maandag 2 juli 2007:
Nou ik zie niet dat hij de dx9 libraries heeft toegevoegd aan z'n project.
Hij zei van wel :)
HawVer schreef op maandag 2 juli 2007:
- Voeg lib path toe aan directories.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nee. Wat jij quote is de standaard dx9 path aan de directory settings van VS (Tools -> Options -> Projects and Solutions -> VC++ directories). Dat betekent niet dat ie automatisch al die libraries in die dir gaat includen voor elk project, het betekent dat als je een lib opgeeft voor een project (Project properties -> Linker -> Input, of middels een #pragma comment(lib)) dat hij ook in die dir gaat zoeken.

[ Voor 20% gewijzigd door .oisyn op 02-07-2007 11:50 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

.oisyn schreef op maandag 2 juli 2007:
Wat jij quotede is het standaard DX 9 pad van de map instellingen van VS (Tools → Options → Projects and Solutions → VC++ directories). Dat betekent niet dat ie automatisch al die libraries in die map gaat includen voor elk project, betekent als je een lib opgeeft voor een project dat ie ook die map doorzoekt.
Ik ga er van uit dat in dit voorbeeldje het wel toegevoegd word. Anders zou het een erg onduidelijk boek zijn :S

[ Voor 0% gewijzigd door Verwijderd op 21-04-2016 15:07 . Reden: Speelkwartier = over. ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

*geanonimiseerd*: ik ken het boek niet, maar het gaat over game programming. Uitleggen hoe je libs include in een VC++ project is wellicht een beetje beyond de scope van het boek zelf en wordt er van de lezer verwacht dat hij dat zelf wel snapt :). Daarnaast, assumptions are the mother of all fuckups, en ik zie niet dat hij het ook daadwerkelijk gedaan heeft, dus vandaar dat ik erover begon.

HawVer: Welke versie van Visual C++ 2005 heb je eigenlijk geinstalleerd? De Express Edition? Dan moet je de platform sdk nog installeren: http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/

[ Voor 13% gewijzigd door .oisyn op 02-07-2007 11:54 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 29-11 23:30
Verwijderd schreef op maandag 02 juli 2007 @ 11:50:
Klopt, maar ik ga er van uit dat in dit 'voorbeeld' dit wel toegevoegd wordt? Anders zou het wel een erg onduidelijk boek zijn.
Mwoah.. Andre Lamothe is volgens mij wel redelijk toonaangevend binnen de 3d boeken. Er stond in het boek RTFM als je het project niet kan builden.. :P Ik heb alleen maar ervaring met de 'oude' visual studio.
.oisyn schreef op maandag 02 juli 2007 @ 11:48:
Nee. Wat jij quote is de standaard dx9 path aan de directory settings van VS (Tools -> Options -> Projects and Solutions -> VC++ directories). Dat betekent niet dat ie automatisch al die libraries in die dir gaat includen voor elk project, het betekent dat als je een lib opgeeft voor een project (Project properties -> Linker -> Input, of middels een #pragma comment(lib)) dat hij ook in die dir gaat zoeken.
:) Dat scheelt al wat errors.. Ik heb de ddraw.lib toegevoegd en nou geeft hij geen unresolved externalls meer. Ik ben (nog) niet zo een held met C++ . :P
.oisyn schreef op maandag 02 juli 2007 @ 11:45:
Aan de link errors te zien wel, echter wordt de app gecompileerd als console app waardoor hij naar
main() zoekt, die niet bestaat, aangezien WinMain() hier je entry point is. Je moet je project instellen als een win32 app (project properties -> Linker -> System, en dan SubSystem instellen als Windows)
En dat lost mijn overige problemen op!! _/-\o_ Met een beetje hulp scheelt het al zoveel tijd! Bedankt *geanonimiseerd* en .oisyn! Helden!
.oisyn schreef op maandag 02 juli 2007 @ 11:52:
HawVer: Welke versie van Visual C++ 2005 heb je eigenlijk geinstalleerd? De Express Edition? Dan moet je de platform sdk nog installeren: http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/
Die problemen heb ik gisteren al op kunnen lossen.. :Y)

http://hawvie.deviantart.com/

Pagina: 1