Du måste länka med någon libfil där directdrawcreateex finns med. Vad har du för kompilator? Flaggan -l brukar användas för länkning.
Tex g++ -ldirectdraw.lib fil.cpp eller nåt i den stilen.
13 svar · 585 visningar · startad av Alpha II
När jag försöker kompilera ett exempel från en DirectDraw tutorial får jag felet:
Error: Unresolved external 'DirectDrawCreateEx' referenced from SÖKVÄG\DD.OBJ
Du måste länka med någon libfil där directdrawcreateex finns med. Vad har du för kompilator? Flaggan -l brukar användas för länkning.
Tex g++ -ldirectdraw.lib fil.cpp eller nåt i den stilen.
Jag använder BCC5.5 och jag försöker kompilera exemplet med hjälp av en "Makefile-fil" som följde med kod exemplet.
ingen som vet? :(
I makefilen står det någonstans hur .exe-filen ska byggas, något i stil med
program: fil1.o fil2.o...
kompilatornamn fil1.o fil2.o... -o program
Lägg till -lddraw.lib på den raden.
Inte LDDRAW. -l är en flagga och ddraw.lib är filnamnet. Det ska stå efter kompilatorns namn ockå.
g++ -lddraw.lib filnamn...
Så här ser Makefile ut, ddraw.lib finns ju där!
Makefile
.AUTODEPEND
cpp = bcc32.exe
link = ilink32.exe
flags = -wuse -w-par -w-rch -c -O2 -X- -tW
linkflags = -Gn -Gi -aa -Tpe -x
libs = import32.lib cw32.lib dxguid.lib ddraw.lib uuid.lib dxextra.lib lddraw.lib
guistartup = c0w32.obj
all: pbdx.exe
main.obj: main.cpp dd.h
$(cpp) $(flags) main.cpp
dd.obj: dd.cpp dd.h
$(cpp) $(flags) dd.cpp
pbdx.exe: main.obj dd.obj
$(link) $(linkflags) $(guistartup) main.obj dd.obj, pbdx.exe, , $(libs)
Alltså. Det ska stå -lddraw.lib på samma rad som flags-parametrarna.
Jag får fortfarande samma fel!
Error: Unresolved external 'DirectDrawCreateEx' referenced from SÖKVÄG\DD.OBJ
Jag ser inget fel i din makefil bortsett från att du möjligtvis måste ange vilken katalog som libfilerna ligger i (med flaggan -L).
Ändra
linkflags = -Gn -Gi -aa -Tpe -x
till
linkflags = -Gn -Gi -aa -Tpe -x -LC:\borland\lib
eller vad det nu är för katalog.
Men det finns ju 2 cfg filer i bin katalogen i kompilatorn där jag redan har ställt in vart lib filerna ligger så det borde ju inte vara problemet.
Tror jag ska leta reda på nån annan DirectDraw tutorial...
Testa lite för att lokalisera felet.
Skriv ett enkelt program,
#include <ddraw.h>
main() {
DirectDrawCreateEx(....);
}
Kompilera på kommandoraden med
bcc32.exe -lddraw.lib filen.cpp
Blir det fortfarande samma fel? I så fall, kolla igenom filen ddraw.h och se ifall DirectDrawCreateEx finns med där. Finns den är det antagligen fel på inställningarna i dina config-filer. Blir det inget fel så används kanske inte makefilen när du kompilerar ditt andra exempel.
Skrev koden så här:
#include <ddraw.h>
LPDIRECTDRAW7 lpDD = NULL;
int main()
{
DirectDrawCreateEx(NULL, (void**)&lpDD, IID_IDirectDraw7, NULL);
return 0;
}
och fick felet:
Fatal: Illegal option: aw.lib
/me fattar nada!
vad är aw.lib?!