Undefines reference to . . . Pointer ???



  • Sorry,
    also:

    Lässt sich kompilieren:

    bool Load(char *filename, char *textureName,int XendFrames[15]);
    

    Lasst sich nicht kompilieren:

    bool Load(char *filename, char *textureName,int XendFrames);
    

    Diese Klasse wird als Bibliothek kompiliert.

    Makefile meines Projektes:

    TARGET = Simple3D
    OBJS = src/GameApp.o src/GameLauncher.o
    
    BUILD_PRX = 1
    PSP_FW_VERSION=371
    
    CFLAGS = -O2 -G0 -Wall
    CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
    ASFLAGS = $(CXXFLAGS)
    
    INCDIR = ../../JGE/include ../../JGE/include/psp ../../JGE/include/psp/freetype2 ../../JGE/src
    LIBDIR = ../../JGE/lib/psp
    LDFLAGS =
    LIBS = -ljge300 -lfreetype -ljpeg -lgif -lpng -lz -lmikmod -lpsppower -lpspmpeg -lpspaudiocodec -lpspaudiolib -lpspaudio -lpspgum -lpspgu -lpsprtc -lm -lstdc++
    
    EXTRA_TARGETS = EBOOT.PBP
    PSP_EBOOT_TITLE = JGE++ 3D Demo
    PSP_EBOOT_ICON = icon.png
    
    PSPSDK=c:\pspSDK\psp\sdk
    include $(PSPSDK)/lib/build.mak
    

    Reicht das ?



  • Hast du die Funktion auch irgendwo definiert (und zwar mit exakt gleicher Signatur)?

    Übrigens ist int XendFrames[15] als Parameter äquivalent zu int* XendFrames . Nicht, dass du meinst, du könntest ein Array direkt übergeben... 😉



  • Es würde mir reichen, wenn ich überhaupt was übergeben kann...

    Header:

    bool Load(char *filename, char *textureName,int* XendFrames);
    

    Source:

    bool JMD2Model::Load(char *filename, char *textureName,int* XendFrames)
    {
    

    Aufruf:

    int endFramesPlayer[15];
    	mPlayer = new JMD2Model();
    	mPlayer->Load("tris.md2", "abarlith.png",endFramesPlayer);		// load a MD2 character
    

    Der Aufruft bleibt nur vorerst so...

    Ach ja, der Makefile für die Erstellung der Bibliothek:

    PSPSDK=$(shell psp-config --pspsdk-path)
    PSPDIR=$(shell psp-config --psp-prefix)
    TARGET_LIB = libjge300.a
    OBJS = src/JApp.o src/JGBKFont.o \
    	src/JGE.o src/JGfx.o src/JGui.o src/JLBFont.o src/JSfx.o \
    	src/JGameObject.o src/JSpline.o src/JAnimator.o \
    	src/JResourceManager.o \
    	src/JFileSystem.o \
    	src/JParticle.o src/JParticleEmitter.o src/JParticleEffect.o src/JParticleSystem.o \
    	src/unzip/ioapi.o src/unzip/mztools.o src/unzip/unzip.o \
    	src/JSprite.o src/Vector2D.o \
    	src/tinyxml/tinystr.o src/tinyxml/tinyxml.o \
    	src/tinyxml/tinyxmlparser.o src/tinyxml/tinyxmlerror.o \
    	src/main.o src/vram.o \
    	src/JAudio.o src/JCooleyesMP3.o \
    	src/decoder_prx.o \
    	src/Encoding.o src/JTTFont.o \
    	src/JMD2Model.o src/JOBJModel.o \
    
    INCDIR = include/psp include/psp/freetype2
    LIBDIR = lib/psp
    
    CFLAGS = -O2 -G0 -Wall -DDEVHOOK -DPSPFW3XX
    
    LIBS = -lgif -lfreetype -ljpeg -lpng -lz -lmikmod -lpsppower -lpspmpeg -lpspaudiocodec -lpspaudiolib -lpspaudio -lpspgum -lpspgu -lpsprtc -lm -lstdc++
    
    include $(PSPSDK)/lib/build.mak
    
    install: $(TARGET_LIB)
    	@cp libjge300.a  lib/psp
    	@echo "Done"
    


  • Wie wärs, wenn du statt des Makefiles mal die exakte Fehlermeldung posten könntest?



  • src/GameApp.o: In function 'GameApp::Create()':
    GameApp.cpp: (.text+0x4d0): undefined reference to 'JMD2Model::Load(char*, char*, int*)'
    GameApp.cpp: (.text+0x504): undefined reference to 'JMD2Model::Load(char*, char*, int*)'
    


  • Hmm, okay. Du sagst, mit int statt int* funktioniere es (oder wie nun genau, du hast dir diesbezüglich widersprochen)? Was ist denn bei diesen Definitionen anders?

    Sind deine Funktionsdefinitionen auch auffindbar (d.h. nicht in einer Datei, die nicht kompiliert wird, oder in einem eigenen Namensraum oder so)?



  • Der Header wird nicht kompiliert...

    Wie meinst du anders ?

    Ich kenn mich mit Klassen nicht so aus, aber am Anfang war so ein Fehler schon mal, mit einer anderen Funktion... dachte mir es könne vielleicht am Makefile liegen. (Die habe ich einfach aufgelöst, die war nicht sehr komplex; im gegensatz zu dieser)



  • DarkShadow44 schrieb:

    Wie meinst du anders ?

    Wenn du eine Funktion hast, die korrekt gelinkt wird, und eine, die Linkerfehler verursacht, kannst du deren Definitionen vergleichen und somit höchstwahrscheinlich auf den Fehler schliessen.

    DarkShadow44 schrieb:

    Ich kenn mich mit Klassen nicht so aus, aber am Anfang war so ein Fehler schon mal, mit einer anderen Funktion... dachte mir es könne vielleicht am Makefile liegen. (Die habe ich einfach aufgelöst, die war nicht sehr komplex; im gegensatz zu dieser)

    Hast du schon mal versucht, einen neuen Build durchzuführen (alte zwischengespeicherte Dinge löschen)?



  • Es geht !!! 😃

    Danke schön !

    Vermutlich habe ich vorher bei der Erstellung der Bibliothek eine Fehlermeldung übersehen, und deshalb hatte er die falsche "Version" (Es gibt sehr viele Warnungen...)

    Nur woher der Fehler kam, der schon ganz am Anfang auftauchte weiß ich nicht...

    gibt es einen Unterschied zwischen u32 und insigned int ?



  • DarkShadow44 schrieb:

    gibt es einen Unterschied zwischen u32 und insigned int ?

    Ich kenne u32 nicht, dieser Typ ist nicht im C++-Standard enthalten. Wahrscheinlich ein typedef oder sogar #define . In einer IDE kannst du dann meistens zur Definition springen und das genauer ansehen...


Anmelden zum Antworten