[Linux] FMOD und LinkerError

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

[Linux] FMOD und LinkerError

Beitrag 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
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Beitrag 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
!UD2
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag 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.
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Beitrag von Froggerprogger »

Sorry, keine Ahnung. :|
Weiss das hier wer anders ?
!UD2
MARTIN
Beiträge: 454
Registriert: 08.09.2004 14:03
Wohnort: Kiel

Beitrag 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.
Amilo 1667|Suse Linux 10.1_64bit/WinXP |PB 4.00/3.94
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag 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....
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
MARTIN
Beiträge: 454
Registriert: 08.09.2004 14:03
Wohnort: Kiel

Beitrag 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.
Amilo 1667|Suse Linux 10.1_64bit/WinXP |PB 4.00/3.94
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag 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...
Zuletzt geändert von 125 am 29.03.2005 12:11, insgesamt 1-mal geändert.
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

also Linux PB ist so derbst Buggy...
Villeicht Probier ichs innem halben jahr noch mal ...
In dem Zustand nicht zu gebrauchen....
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
andy59
Beiträge: 5
Registriert: 01.02.2005 00:09
Wohnort: Stuttgart

Beitrag 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.
Antworten