Seite 1 von 1

[Linux] FMOD und LinkerError

Verfasst: 28.03.2005 19:46
von 125
Hi,
ich hab die include PB vom fmodapi374purebasic.zip ein bisschen umgebaut so das sie unter Linux laufen müsste. Ich versuchte mein projekt zu kompilieren und bekam einen LinkerError. Nun suchte ich die Datei die dran schuld is (kompilierte die Includes einzeln) und es war der Fmod Include. Es ist aber nichts daran Falsch (finde den Fehler zumindenst nicht). Könnt ihr euch den Code bitte mal anschauen der Error ist:
purebasic.o(.text+0x4896): In function `main':
: undefined reference to `PB_CallFunction14'
collect2: ld returned 1 exit status
Error: Linker
Mein Code:
//Edit war zu lang ich schieb in auf meinen Webspace

//Edit2: hier der Link: -siehe unten-
//Edit3: neuer Link wegen LinkExternError: http://fighter125.fi.funpic.de/fmod.htm

Verfasst: 28.03.2005 21:20
von Froggerprogger
Die fmodapi374win.zip ist für Windows, ebenso die PB-Lib darin.
Für Linux gibt es keinen Import, dort muss fmod irgendwie anders eingebunden werden (habe ich noch nicht ausprobiert, aber erstmal musst Du fmodapi374linux.tar.gz von fmod.org ziehen, darin findet sich sicher eine readme.txt

Verfasst: 28.03.2005 21:30
von 125
Also,
ich hab mir die Linux Lib gezogen bin ja nicht doof ;)
hab auch nicht den Wrapper benutzt sondern den Include der die Funktionen Wrappt (er öffnet die Lib und macht proceduren die dann callfunction... machen) das ganze hab ich auf die Funktionsnamen der LinuxLib umgebaut. und bei OpenLibrary den Dateinamen der Linux fmodlib reingeschrieben. diese ist auch im compiler verzeichnis und in den LinuxLib verzeichnissen und in Lib Index von mandrake registriert.
Aber ich bekomme beim Compilierns dieses neuen Wrapper includes den oben genannten fehler und weis nicht warum.
Aber wie gesagt hab den Wrapperinclude auf Linux umgeschrieben...

In diesem Thread : http://www.fmod.org/forum/viewtopic.php ... highlight=
Gabs nen ähnlichen Fehler (allerdings C++) hier sollte man dann statt gcc g++ nehmen was dort auch probemlos ging Problem: PB benutzt gcc.

Plz Help.

Verfasst: 28.03.2005 22:47
von Froggerprogger
Sorry, keine Ahnung. :|
Weiss das hier wer anders ?

Verfasst: 28.03.2005 23:35
von MARTIN
Mir scheint dass PB-Linux einfach nicht im Stande ist eine so- Funktion aufzurufen, die so viele Argumente hat:
undefined reference to `PB_CallFunction14'
Hat nichts mit fmod zutun sondern, generell mit so-libs
Es scheint dass eine Funktion in fmod.pbi so sehr viele Argumente braucht, mehr als 13.
Wo ist in diesem Thread Ähnlichkeit zu deinem Problem ?
Meinst du gcc hat diese einschränkung auf max N-Prameter einer so-lib ?
Ich habe eine funktion mit mehr als 10 noch nie Programmiert aber vielleicht ist es tatsächlich so, ich wered mir erkundigen.

Verfasst: 29.03.2005 00:13
von 125
geb ma in die Fmod suche

"undefined reference" ein du bekommst 10 Threads
In all diesen 10 Threads lags am Linker von GCC...

Und ne Fmod funktion mit mehr als 13 Paramtern gibts net aber ich werd mal kurz suchen....


//Edit das höchste was ich gefunden hab waren 9 params....

Verfasst: 29.03.2005 01:23
von MARTIN
13 Paramtern gibts net
Doch:

Code: Alles auswählen

FSOUND_FX_SetI3DL2Reverb(fxid.l, Room.l, RoomHF.l, RoomRolloffFactor.f, DecayTime.f, DecayHFRatio.f, Reflections.l, ReflectionsDelay.f, Reverb.l, ReverbDelay.f, Diffusion.f, Density.f, HFReference.f)
Ausserdem ich habe grade eine libtest.so programiert, die Funktionen mit 9,10,11,12,13,14 Parametern hat. Ab 12 Parameter gibt es bei PB Linkerfehler(also 12+2 von Callfunktion(..)). Mit gcc lassen sich problemlos alle Funktionen aufrufen.
Darüber hinaus kann doch ld diese Funktion nicht finden:
undefined reference to `PB_CallFunction14'
also PB-Funktion CallFunktion-Funktion und keine libfmod.so-funktion.
Es liegt also an PB.

Verfasst: 29.03.2005 01:28
von 125
ok thx werd mal gucken was er sagt wenn ich die Funktion aus der Include entferne.

//Edit: funzt aber der Player funzt zu 99 % nicht mehr^^ gibt keine Vertical Trackbars.... Irgendwie muss man ins ListIConGadget anders items einfügen... (eben waren die Infos in den falschen spalten)... habbich ja ne menge zu tun...

Verfasst: 29.03.2005 02:32
von 125
also Linux PB ist so derbst Buggy...
Villeicht Probier ichs innem halben jahr noch mal ...
In dem Zustand nicht zu gebrauchen....

Verfasst: 30.03.2005 21:56
von andy59
also ich verwende die fmod.dll unter Linux schon ne weile halt ganz normal
mit :

Code: Alles auswählen

result = OpenLibrary(1,"/usr/lib/libfmod-3.74.so")
und dann mit normalen Callfunktion Aufrufen wie zum Beispiel :

Code: Alles auswählen

 result=CallFunction(1,"FSOUND_Init",44100,4, #FSOUND_INIT_ACCURATEVULEVELS)
läuft alles prima, also wieso mit dem Wrapper rumärgern ?


PS: seit es Burebasic 3.92 für Linux gibt und den neuen IDE-Beta macht es doch richtig Spaß unter Linux.