|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Westbeam
Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 29.05.2011, 16:08 Titel: Bass Problem |
|
|
Hi
Ich wollte heute für mein Spiel die Hintergrundmusik machen, also habe ich mir das BASS-Beispiel im FreeBasic Ordner angeschaut, allerdings bekomme ich beim Kompilieren diesen Fehler:
Zitat: | fbc -w all "test.bas" (im Verzeichnis: /home/alex/a/FB/fmod)
Kompilierung fehlgeschlagen.
/usr/local/include/freebasic/bass.bi(1) error 14: Expected identifier, found 'BYTE' in 'type BYTE as ubyte'
/usr/local/include/freebasic/bass.bi(19) error 18: Syntax error, found 'WORD' in 'type WORD as ushort'
/usr/local/include/freebasic/bass.bi(20) error 18: Syntax error, found 'DWORD' in 'type DWORD as uinteger'
/usr/local/include/freebasic/bass.bi(21) error 18: Syntax error, found 'BOOL' in 'type BOOL as integer'
/usr/local/include/freebasic/bass.bi(27) error 18: Syntax error, found 'QWORD' in 'type QWORD as ulongint'
/usr/local/include/freebasic/bass.bi(29) error 18: Syntax error, found 'HMUSIC' in 'type HMUSIC as DWORD'
/usr/local/include/freebasic/bass.bi(30) error 18: Syntax error, found 'HSAMPLE' in 'type HSAMPLE as DWORD'
/usr/local/include/freebasic/bass.bi(31) error 18: Syntax error, found 'HCHANNEL' in 'type HCHANNEL as DWORD'
/usr/local/include/freebasic/bass.bi(32) error 18: Syntax error, found 'HSTREAM' in 'type HSTREAM as DWORD'
/usr/local/include/freebasic/bass.bi(33) error 18: Syntax error, found 'HRECORD' in 'type HRECORD as DWORD'
/usr/local/include/freebasic/bass.bi(33) error 123: Too many errors, exiting |
Und die dafür verantwortlichen Zeilen in der bass.bi:
Code: | type BYTE as ubyte
type WORD as ushort
type DWORD as uinteger
type BOOL as integer
# define TRUE 1
# define FALSE 0
#define MAKELONG(a,b) cint( cushort(a) or (cuint(cushort(b)) shl 16) )
#endif '' __FB_WIN32__
type QWORD as ulongint
type HMUSIC as DWORD
type HSAMPLE as DWORD
type HCHANNEL as DWORD
type HSTREAM as DWORD
type HRECORD as DWORD |
Wieso ist das so und wie kann ich das ändern, dass das nicht mehr so ist? |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 29.05.2011, 16:23 Titel: |
|
|
vermutlich werden BYTE etc. schon durch einen anderen Header bei dir definiert. einfach eine kopie der bass.bi für dein eigenes projekt anlegen und dort die ersten vier von dir genannten Zeilen entfernen. Ich hab keine Ahnung, wie aktuell die bass.bi inzwischen ist, aber wenn die immer noch für BASS 2.3 ist (was in deinem Fall hoffnungslos wäre, weil es BASS 2.3 nicht für Linux gibt), kannst du die bass24.bi von jumpin' hi! verwenden und da die passenden zeilen streichen. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
Westbeam
Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 29.05.2011, 16:33 Titel: |
|
|
Wenn ich die Zeilen weglasse, bekomme ich folgenden Fehler:
Zitat: | fbc -w all "test.bas" (im Verzeichnis: /home/alex/a/FB/fmod)
/usr/local/include/freebasic/bass.bi(66) error 14: Expected identifier, found 'DWORD' in 'flags as DWORD'
/usr/local/include/freebasic/bass.bi(67) error 14: Expected identifier, found 'DWORD' in 'hwsize as DWORD'
/usr/local/include/freebasic/bass.bi(6) error 14: Expected identifier, found 'DWORD' in 'hwfree as DWORD'
Kompilierung fehlgeschlagen.
/usr/local/include/freebasic/bass.bi(69) error 14: Expected identifier, found 'DWORD' in 'freesam as DWORD'
/usr/local/include/freebasic/bass.bi(70) error 14: Expected identifier, found 'DWORD' in 'free3d as DWORD'
/usr/local/include/freebasic/bass.bi(71) error 14: Expected identifier, found 'DWORD' in 'minrate as DWORD'
/usr/local/include/freebasic/bass.bi(72) error 14: Expected identifier, found 'DWORD' in 'maxrate as DWORD'
/usr/local/include/freebasic/bass.bi(73) error 14: Expected identifier, found 'BOOL' in 'eax as BOOL'
/usr/local/include/freebasic/bass.bi(74) error 14: Expected identifier, found 'DWORD' in 'minbuf as DWORD'
/usr/local/include/freebasic/bass.bi(75) error 14: Expected identifier, found 'DWORD' in 'dsver as DWORD'
/usr/local/include/freebasic/bass.bi(75) error 123: Too many errors, exiting |
Wenn ich deine bass24.bi nutze, passiert folgendes im FreeBasic-Beispiel:
Code: | fbc -w all "test.bas" (im Verzeichnis: /home/alex/a/FB/fmod)
Kompilierung fehlgeschlagen.
test.bas(18) error 41: Variable not declared, FALSE in 'test = BASS_MusicLoad( FALSE, MusicFile, 0, 0, BASS_MUSIC_LOOP, 0 )'
test.bas(18) warning 12(0): Implicit variable allocation, FALSE
test.bas(18) error 55: Type mismatch, at parameter 2 of BASS_MUSICLOAD() in 'test = BASS_MusicLoad( FALSE, MusicFile, 0, 0, BASS_MUSIC_LOOP, 0 )'
|
Die entsprechenden Zeilen:
Code: | #include once "bass24.bi"
const MusicFile = "data/dne_trtn.mod"
'...
test = BASS_MusicLoad( FALSE, MusicFile, 0, 0, BASS_MUSIC_LOOP, 0 ) |
|
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 29.05.2011, 17:51 Titel: |
|
|
Du hättest ja mal in die Datei reinschauen können. Dann hättest du festgestellt, dass ich die #defines für TRUE und FALSE auskommentiert habe (weil ich sie woanders schon definiert hatte). _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 29.05.2011, 17:52 Titel: |
|
|
Dann lass mal
Code: | # define TRUE 1
# define FALSE 0 |
drin. Das sollte zumindest die ersten beiden Fehler beheben (den dritten vermutlich auch).
(edit: war zu langsam ) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Westbeam
Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 29.05.2011, 17:57 Titel: |
|
|
Stimmt, jetzt bekomme ich nur noch folgenden Fehler:
Zitat: | test.bas(18 ) error 55: Type mismatch, at parameter 2 of BASS_MUSICLOAD() in 'test = BASS_MusicLoad( FALSE, MusicFile, 0, 0, BASS_MUSIC_LOOP, 0 )' |
Für die Zeile:
Code: | #include once "bass24.bi"
Const MusicFile = "data/dne_trtn.mod"
'...
test = BASS_MusicLoad( FALSE, MusicFile, 0, 0, BASS_MUSIC_LOOP, 0 |
|
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 29.05.2011, 17:59 Titel: |
|
|
Ich habe die bass24.bi gerade nicht zur Hand, aber kann es sein, dass MusicFile ein STRING PTR sein muss? _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Westbeam
Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 29.05.2011, 18:08 Titel: |
|
|
In der bass24.bi ist der Parameter ein "Any Ptr" |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 29.05.2011, 18:15 Titel: |
|
|
Auch das hätte ein Blick in meinen Code beantworten können: Der String muss per StrPtr übergeben werden. BASS ist eine C-Bibliothek, keine FreeBASIC-Bibliothek, die kann mit dem String-Datentyp von FB nichts anfangen! Daher brauchst du den Pointer auf das interne Char-Array, und den liefert StrPtr(). _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
Westbeam
Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 29.05.2011, 18:29 Titel: |
|
|
Oh, es klappt. Danke |
|
Nach oben |
|
|
Westbeam
Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 29.05.2011, 18:43 Titel: |
|
|
Und wie lade ich eine Mp3 Datei? Offenbar muss man diese anders laden als MoD-Dateien.
EDIT: Über BASS_STREAMCREATE |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 29.05.2011, 19:43 Titel: |
|
|
bass.chm ist dein Freund bei solchen Fragen... Die Dokumentation zu der Bibliothek ist wirklich sehr gut geschrieben. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 562 Wohnort: Jüterbog
|
Verfasst am: 06.01.2012, 23:09 Titel: |
|
|
... auch wenn wenn das hier schon etwas älter ist, hänge ich mich mal einfach so ran:
mein (tatsächlich) erster Versuch mal eine Bibliothek einzubinden, die BASS sollte dafür herhalten.
nemoreds Buch hat mich etwas animiert, es sah sooooo unproblematisch aus, ein Link zum Download war auch gleich da...
Code: | '#include "bass.bi" 'FB Paket
'#include "bass24.bi" 'Jojos jumpin'hi
#include "mybass24.bi" 'von mir mit SWIG_FB erstellt und von den oberen beiden gnadenlos zusammengeklaut
#inclib "bass"
screen 19,32
bass_init (-1, 44100 , BASS_DEVICE_8BITS, 0 , 0 )
dim as string filename = "kraftwerk.wav"
dim as HSTREAM music = BASS_StreamCreateFile (0,strptr(filename),0,0,0)
BASS_Channelplay (music , 0) ' musik a b s p i e l e n
do
sleep 1
if getkey = 27 then exit do
loop
BASS_Free () |
mit der "alten" bass.bi funktioniert dieses Beispiel gut.
mit dem beiden anderen leider nicht:
C:\Users\Frank\Programmierung\Basic\BASS_Tests\PlayWave.o:fake:(.text+0x6e): undefined reference to `BASS_StreamCreateFile@28'
in der alten(funktionierenden) bass.bi aus dem FB-Paket steht folgende Zeile:
Code: | declare function BASS_StreamCreateFile alias "BASS_StreamCreateFile" (byval mem as BOOL, byval file as zstring ptr, byval offset as DWORD, byval length as DWORD, byval flags as DWORD) as HSTREAM |
also BOOL,ZSTRPTR,DWORD,DWORD,DWORD
in Jojos bass24.bi und meinem Machwerk folgendes:
Code: | Declare Function BASS_StreamCreateFile Alias "BASS_StreamCreateFile" (ByVal mem As BOOL, ByVal file As Any Ptr, ByVal Offset As QWORD, ByVal length As QWORD, ByVal flags As Dword) As HSTREAM |
BOOL,ZSTRPTR,QWORD,QWORD,DWORD ???
die bass.chm sagt dazu folgendes:
Code: | HSTREAM BASS_StreamCreateFile(
BOOL mem,
void *file,
QWORD offset,
QWORD length,
DWORD flags
); |
Das Stringproblem als gelöst betrachtet: Warum funktioniert das ganze bei falscher Typenangabe? |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 06.01.2012, 23:54 Titel: |
|
|
QWORD und DWORD usw. sind auch nur Referenzen auf andere Datentypen; auf welche genau hängt dann wieder von der jeweiligen .bi ab. Insofern können zwei Datentypen mit unterschiedlichen Namen möglicherweise in Wirklichkeit identisch sein.
Ehrlich gesagt hat das Sound-Kapitel noch einen Haken, nämlich dass die mitgelieferte BASS-Bibliothek nicht aktuell ist. Du kannst ja mal damit ausprobieren; die sollte eigentlich funktionieren. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 562 Wohnort: Jüterbog
|
Verfasst am: 07.01.2012, 00:02 Titel: |
|
|
> Executing: C:\Users\Frank\Programme\ConTEXT\ConExec.exe "C:\Users\Frank\Programme\FreeBASIC\fbc.exe" -s console "C:\Users\Frank\Programmierung\Basic\BASS_Tests\PlayWave.bas"
C:\Users\Frank\Programmierung\Basic\BASS_Tests\PlayWave.o:fake:(.text+0x67): undefined reference to `BASS_StreamCreateFile@28'
> Execution finished.
nein, leider auch nicht
solang das mit der neuen Bibliothek und der alten .bi funktioniert, ists ja erstmal kein Problem |
|
Nach oben |
|
|
MOD Fleißiger Referenzredakteur
Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 07.01.2012, 00:50 Titel: |
|
|
Es reicht nicht nur, die .bi auszutauschen. Zur .bi gehört die .dll in der richtigen Version und eine .dll.a, die im FB-lib Ordner liegt. Erst wenn alle zusammenpassen, funktioniert das auch.
Wenn du beispielsweise Jojos .bi und die .dll nimmst (vermutlich aus dem Jumpin' Hi Download), fehlt vermutlich die .dll.a dazu. Im Header-Projekt ist BASS leider noch nicht vorhanden, allerdings kann man sich mit pexports aus einer bestehenden .dll die nötigen Dateien generieren. |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 07.01.2012, 02:04 Titel: |
|
|
Meine .bi passt zur aktuellen Version von bass.dll (bass.lib aus dem bass-Paket in bass.dll.a umbenennen und und man hat alle benötigten Dateien). _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 562 Wohnort: Jüterbog
|
Verfasst am: 09.01.2012, 00:58 Titel: |
|
|
Hmm... das hat jetzt doch etwas Nerven gekostet
und ich war fast geneigt zu sagen:
der User möge doch einfach ne CD seiner Wahl einlegen und ein
tut es dann im Programm auch!!!!
Aber alles was man wissen muß steht doch tatsächlich hier im Forum !!!
Was ich bisher via Trial@Error herausgefunden hab:
1.) im lib/win32 Ordner hab ich mal die Dateien libbass.dll.a und libbassmod.dll.a umbenannt.Bei letzterer bin ich mir nicht sicher.
Löschen wollte ich sie nicht.
2.) die bass.lib aus dem BASS-Paket in o.g. Ordner hineinkopiert und sie in libbass.dll.a umbenannt.
mit einer .a erstellt aus pexports und dlltool hatte ich kein Glück, scheint nicht zu funktionieren.
Das muß aber nun so garnichts heißen
3.) BASS.dll und bass.bi in den Programmordner... es scheint zu funktionieren, alle 3,
Jojos,nemoreds und auch meine von mir selbst zusammengeklaute
bedanke mich mal artig bei allen
Mutton |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.01.2012, 10:21 Titel: |
|
|
BASSMOD ist eine von BASS abgeleitete Bibliothek, die nur MODs abspielt. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 09.01.2012, 16:17 Titel: |
|
|
Wir werden mal sehen, was der fbc 0.24 bzgl. der BASS-Bibliothek mitliefert - sonst werde ich vielleicht im Buch lieber noch ein Kapitel "Installation von BASS" einbauen. Da gibt es schon so ein paar Sachen, auf die man vielleicht nicht so ganz ohne weiteres von allein kommt. *notier* _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|