Page 2 sur 3

Le pb, c'est pas le C.

Publié : lun. 06/mars/2006 22:06
par meganet
Merci!
Le pb, c'est pas le C, c'est de pouvoir l'interprèter en PB.
Et ta DLL, lol je suis un merde en anglais!
DC ouai je veu bien un coup de main stp.

Publié : lun. 06/mars/2006 23:40
par KarLKoX
Je viens de checker l'archive que je t'ai uploadé et, ouf, la userlib est bien disponible, il te suffit juste de copier le fichier "fmodex.lib" dans le dossier "PureLibraries\Windows\Libraries" de PureBasic et le fichier "fmodex.res" dans le dossier "Residents" de PB.
Tu pourras ensuite appeler les fonctions de FMOD Ex comme si elles faisaient partis de PureBasic.
Testé avec PB 3.94, devrait fonctionner avec la 4.0.

Oui mais

Publié : lun. 06/mars/2006 23:48
par meganet
Oui, mais si je veu le faire à la main, c'est parce que mon soft doit tourner sous Windows, Linux, et MacOS.
DC je ne suis pas sur que je peu utiliser ta lib.
Si quelqu'un qui est sous linux pourrais tester SVP?
Merci.

Publié : mar. 07/mars/2006 0:08
par KarLKoX
Ah bein oui, j'avais oublié linux et mac os x :lol:
Bon, voici l'étape, en tout cas sous Windows/Linux :

- Chargement de la lib (dll ou .so) via OpenLibrary,
- Déclaration des pointeurs sur fonctions (variables globales),
- Récupération des pointeurs sur fonction GetFunction,
- Appel de la fonction via CallFunctionFast.

Ce qui donne avec une fonction prise au hasard :

Code : Tout sélectionner

Global PB_FMOD_System_CreateSound.l
#FMODEX = 1

Procedure FMOD_Load()
Protected DLL.l
DLL = OpenLibrary(#FMODEX, "fmodex.dll")
If DLL = 0
    MessageRequester("Error", "Can't load FMODEX.DLL", 0)
    End
Else
    PB_FMOD_System_CreateSound = GetFunction(#FMODEX, "FMOD_System_CreateSound")
    ProcedureReturn DLL
EndIf

EndProcedure

Procedure FMOD_System_CreateSound(*system.l, *name_or_data.l, mode.l, *exinfo.l, *sound)
    ProcedureReturn CallFunctionFast(PB_FMOD_System_CreateSound, *system, *name_or_data, *exinfo, *sound)
EndProcedure

Procedure FMOD_Close()
   CloseLibrary(#FMODEX)
EndProcedure

Ouaou

Publié : mar. 07/mars/2006 3:35
par meganet
Ouaou!
Lol et tu les trouve où tes variable à mettre en global?
J'ai essayer d'autre fonctions en essayant de suivre le même principe, ça à planter!

Publié : mar. 07/mars/2006 12:26
par KarLKoX
Les variables tu les trouves ... dans ta logique :P
Regarde bien, je prend une fonction de FMOD Ex au hasard, auquel je rajoute PB_ (pour garder la philosophie des userlibs), cette variable servira de pointeur sur fonction et pour l'appeler, je créer une fonction qui porte exactement le même prototype que celle de FMOD Ex, sans le PB_, et c'est dans cette même fonction que j'appel ma variable global (avec le PB_ donc) qui est en fait le pointeur sur fonction du même nom.

Je vais essayer de faire avec.

Publié : mar. 07/mars/2006 15:31
par meganet
Merci, je vais essayer de faire avec ça!
MC BCP!

9a ne passe pas.

Publié : mer. 08/mars/2006 13:02
par meganet
Salut, ya un truc qui bug, quand j'utilise System_CreateSOund("http://www.votresite.com:8000", 0, 0) Sa plante. ç parrament, il faut utiliser une autre commande pour lire du streaming, mais j'y arrive pas je ne comprend pas grand chose à la doc en anglais.
Si quelqu'un pourrais me dire comment utiliser FMOD pour lire une radio en streaming?
Merci!

Publié : mer. 08/mars/2006 19:51
par KarLKoX
Tu as lu les examples ? Tu en a un tout fait. (netstream)

Oui mais les autre

Publié : mer. 08/mars/2006 20:40
par meganet
Oui, mais cette example utilise la lib.

Publié : mer. 08/mars/2006 20:51
par KarLKoX
Ca ne change en rien à la façon d'utiliser FMOD* :wink:



* si tu as utilisé ma méthode qui consiste à appeler les procedures de la même façon que celle de FMOD :)

Y a un pb!

Publié : jeu. 09/mars/2006 19:00
par meganet
Salut,
j'ai un pb, lorsque 'écrit:
ProcedureReturn CallFunctionFast(PB_FMOD_CreateStream,System,URL,0,0)
Le programme plante.
Quelqu'un pourrais me dire où est l'erreur, j'ai passé 2 h dessu sans trouver!
Merci!

Publié : jeu. 09/mars/2006 19:39
par KarLKoX
Ca ne plante que sur cette fonction ou pas ?

Oui

Publié : jeu. 09/mars/2006 20:03
par meganet
OUi, quand je commante cette fonction, le programme se lance, mais lol il ne veu pas lire.
J'ai pas été plus loin par example avec playsound, car je teste toutes mais fonction à chaque fois.

Publié : jeu. 09/mars/2006 20:27
par KarLKoX
Il manque un paramètre, il y en à 5 et non 4 ;)