Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Bass Problem

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 29.05.2011, 15:08    Titel: Bass Problem Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 29.05.2011, 15:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 29.05.2011, 15:33    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 29.05.2011, 16:51    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 29.05.2011, 16:52    Titel: Antworten mit Zitat

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 happy)
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 29.05.2011, 16:57    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 29.05.2011, 16:59    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 29.05.2011, 17:08    Titel: Antworten mit Zitat

In der bass24.bi ist der Parameter ein "Any Ptr"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 29.05.2011, 17:15    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 29.05.2011, 17:29    Titel: Antworten mit Zitat

Oh, es klappt. Danke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 29.05.2011, 17:43    Titel: Antworten mit Zitat

Und wie lade ich eine Mp3 Datei? Offenbar muss man diese anders laden als MoD-Dateien.

EDIT: Über BASS_STREAMCREATE zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 29.05.2011, 18:43    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 561
Wohnort: Jüterbog

BeitragVerfasst am: 06.01.2012, 22:09    Titel: Antworten mit Zitat

... 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 06.01.2012, 22:54    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 561
Wohnort: Jüterbog

BeitragVerfasst am: 06.01.2012, 23:02    Titel: Antworten mit Zitat

> 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
traurig

solang das mit der neuen Bibliothek und der alten .bi funktioniert, ists ja erstmal kein Problem
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 06.01.2012, 23:50    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.01.2012, 01:04    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 561
Wohnort: Jüterbog

BeitragVerfasst am: 08.01.2012, 23:58    Titel: Antworten mit Zitat

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
Code:
print "peng"

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 lächeln

bedanke mich mal artig bei allen
Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.01.2012, 09:21    Titel: Antworten mit Zitat

Zitat:
libbassmod.dll.a

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 09.01.2012, 15:17    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz