Gå til innhold

Anbefalte innlegg

Skrevet (endret)

Hei

 

Har begynnt å lese på Direct3d. men så støter jeg på et problem da.

feil 1

Linking...
X_File.obj : error LNK2019: unresolved external symbol _D3DXCreateTextureFromFileA@12 referenced in function "void __cdecl load_X_file(char *)" (?load_X_file@@YAXPAD@Z)

feil 2

X_File.obj : error LNK2019: unresolved external symbol _D3DXLoadMeshFromXA@32 referenced in function "void __cdecl load_X_file(char *)" (?load_X_file@@YAXPAD@Z)
Flight-Real.exe : fatal error LNK1120: 2 unresolved externals

 

 

har instalert directx sdk så det er ikke problemet.

 

håper noen kan hjelpe. og ja jeg har husket å inkludere d3d9.lib, d3dx9.lib osv.

 

Mhv.Fredrik

 

edit: har også søkt på gamedev.com google.com og gametutorials.com men finner ikke svaret.

Endret av Fredrik90
Videoannonse
Annonse
Skrevet

du må inkludere d3d9xtex.h og d3d9xmesh.h og linke med d3dx9.lib

mener du at du har linket når du sier at du har inkludert .lib filer?

Skrevet

Hvis du allerede linker med d3dx9.lib var det litt mystisk. Sikker på at du linker med biblioteket?

 

Prøv å legg inn denne linjen i en cpp-fil:

#pragma comment( lib, "d3dx9.lib" )

Skrevet

har nå prøvd alt dere har sakt og alle feilene kommer sånn som istad. bruker VC++ 2005 express beta. håper noen har en løsning. koden kompilerer het fint men så kommer det til å linke og da sier det stopp.

 

håper på et raskt svar.

 

Mvh. Fredrik

Skrevet (endret)

Bruk et verktøy for å sjekke hvilke symboler som ligger hvor.

 

void a();

 

int main()

{

a();

return(0);

} // main

 

#include <iostream>

 

void a()

{

        std::cout << "hello\n";

} // a

 

$ g++ -g -c a.cpp

$ g++ -g -c b.cpp

 

..kompileres uten problemer, som hos deg. (filen b.cpp tilsvarer biblioteket 'DirectX')

Men når vi linker:

 

$ g++ -g a.o

a.o(.text+0x1d): In function `main':

/home/lars/tests/a.cpp:5: undefined reference to `a()'

 

Så må vi leite, her er det jo veldig lett å gjette på første forsøk hvor symbolet `a()' ligger:

 

$ nm b.o | c++filt

00000170 t global constructors keyed to _Z1av

00000100 T a()

0000011c t __static_initialization_and_destruction_0(int, int)

...

 

*bingo* .. dette er filen jeg må linke inn for at den skal finne symbolet `a()', slik:

 

$ g++ -g a.o b.o -o prog

 

kjøres:

$ ./prog

hello

 

Jeg er sikker på at MS distribuerer et tilsvarende verktøy -- noen andre her vet sikkert hva de har kallt det.

 

Edit:

Det er lurt å sette seg inn i grunnleggende ting - for å spare seg selv for en masse bryderier:

http://www.network-theory.co.uk/docs/gccintro/

(det det snakkes om her kan brukes i sammenheng med alle kompilere -- det er bare trivielle forskjeller i syntax o.s.v.)

Endret av søppel
Skrevet (endret)

Ser ikke ut som om linkeren er enig. Om han vet, at han vet, at han vet, at han gjør det rektig (hvordan? - docs skrevet av andre) - så kunne det være en idé å sjekke i libbet om symbolet faktisk var der (hvordan? - man tar en titt selv) - selv om det er der.

 

(feil under nedlasting av lib? i dunno)

 

Edit:

men for all del -- folk får gjøre hva de vil

Endret av søppel
Skrevet

nå har jeg prøvd både pragma coment og linke de med manuelt. men alt jeg får er de samme feilene. har ingen opplevd noe lignene før.

Håper noen vet noe. som sakt bruker jeg vc++ så hvis noen vet om at det kan være et problem der eller en spesiel metode jeg må bruke så si ifra.

 

ser at det er en debatt som begynner her og det trenger vi ikke. de som liker linux liker det og de som liker windows liker det.

 

mvh. Fredrik

Skrevet

Holdt ikke du egentlig på å lære deg OpenGL? Litt off topic, men men

 

Uansett, du har antagelig gjort det, men du har innstalert directx9 sdken?

Skrevet (endret)
ser at det er en debatt som begynner her og det trenger vi ikke. de som liker linux liker det og de som liker windows liker det. de som liker linux liker det og de som liker windows liker det.

Hvem, hva, hvor? Sug meg i rævva -- les det jeg skriver.

 

Bruk et verktøy

...

Jeg er sikker på at MS distribuerer et tilsvarende verktøy -- noen andre her vet sikkert hva de har kallt det.

...

(det det snakkes om her kan brukes i sammenheng med alle kompilere (og OS/kompiler-verktøy) -- det er bare trivielle forskjeller i syntax o.s.v.)

 

Hva har dette med Linux kontra Windows å gjøre?

 

Dette er slik jeg løser slike problemer -- (jupp, både under Linux og Windows - og jeg vet andre kompilere+verktøy har samme funksjonalitet).

 

Du spør etter løsning på problem -- jeg svarer -- problem?

Endret av søppel
Skrevet

har du riktig path da? Direct X SDK er nok laget for Visual Studio.NET. men funker ikke for Visual Studio.NET 2003 (ihvertfall ikke hos meg) for da kommer det et DirectX logo når Visual Studio starter, så da må du velge riktig "additional library directories" kanhende...

Skrevet

directx 9.0c SDK later som om jeg ikke har noenting installert, 9.0b lot være å kopiere inn noe som helst, og lata som alt gikk flott, den dreit lodrett i managed directx, men registrerte at det var installert... så jeg fikk tak i directx 9.0c sdk, og da ble alt kopiert inn i sdk mappa, men visual studio har ikke registrert at directx sdk er installert.

 

nå har jeg hatt store problemer med directx sdk på alle maskinene mine... AlphaArg(i fragment shaders(vertex/pixel shaders i direct3d?)) funker ikke på verken GeForce3 eller GeForec FX 5700, det er vist ikke støttet av min maskinvare (bullpup)

så jeg holder meg til opengl jeg.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...