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.makReicht das ?
-
Hast du die Funktion auch irgendwo definiert (und zwar mit exakt gleicher Signatur)?
Übrigens ist
int XendFrames[15]als Parameter äquivalent zuint* 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 characterDer 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
intstattint*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
u32nicht, dieser Typ ist nicht im C++-Standard enthalten. Wahrscheinlich eintypedefoder sogar#define. In einer IDE kannst du dann meistens zur Definition springen und das genauer ansehen...