Problème fmod avec l'api windows

Fermé
cherios - Modifié le 30 août 2017 à 07:03
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 31 août 2017 à 12:52
la j'ai vraiment un problème et je ne sais pas ou sa bloque voici le code et job-tien toujours cette erreur le but est simple bouton parler jouer la music stream
#include <windows.h>
#include <time.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include "fmod.h"

#include "fmod_errors.h"
#define ID_B_PARLER 0

int c =1;
int d =0;
int f =0;
int g =0;
int l =0 ;

#define ID_B_QUITTER 1
    #define TAILLE_MAX 1000

    int nombreAleatoire = 0;
char chaine[TAILLE_MAX] = "";
     FILE* fichier = NULL,*a = NULL;
 int allo = 0;






    /*
        Create a system2 object and initialize.
    */



HINSTANCE instance;

LRESULT CALLBACK procedureFenetrePrincipale(HWND, UINT, WPARAM, LPARAM);

int WinMain (HINSTANCE cetteInstance, HINSTANCE precedenteInstance,
LPSTR lignesDeCommande, int modeDAffichage)
{


    FMOD_SYSTEM     *system2;
    FMOD_SOUND      *sound,*tir;
    FMOD_CHANNEL    *channel = 0;
    FMOD_RESULT      result;
    int              key;
    unsigned int     version;

  result = FMOD_System_Create(&system2);



 result = FMOD_System_Init(system, 1, FMOD_INIT_NORMAL, 0);
    ERRCHECK(result);

    /*
        Bump up the file buffer size a little bit for netstreams (to account for lag).
    */
    result = FMOD_System_SetStreamBufferSize(system, 64*1024, FMOD_TIMEUNIT_RAWBYTES);
    ERRCHECK(result);



    HWND fenetrePrincipale;
    MSG message;
    WNDCLASS classeFenetre;

    instance = cetteInstance;

    classeFenetre.style = 0;
    classeFenetre.lpfnWndProc = procedureFenetrePrincipale;
    classeFenetre.cbClsExtra = 0;
    classeFenetre.cbWndExtra = 0;
    classeFenetre.hInstance = NULL;
    classeFenetre.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    classeFenetre.hCursor = LoadCursor(NULL, IDC_ARROW);
    classeFenetre.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
    classeFenetre.lpszMenuName =  NULL;
    classeFenetre.lpszClassName = "classeF";

    // On prévoit quand même le cas où ça échoue
    if(!RegisterClass(&classeFenetre)) return FALSE;

    fenetrePrincipale = CreateWindow("classeF", "Ma premiere fenetre winAPI !", WS_OVERLAPPEDWINDOW,
                                   CW_USEDEFAULT, CW_USEDEFAULT, 400, 110,
                                                   NULL, NULL, cetteInstance, NULL);
    if (!fenetrePrincipale) return FALSE;

    ShowWindow(fenetrePrincipale, modeDAffichage);
    UpdateWindow(fenetrePrincipale);


    while (GetMessage(&message, NULL, 0, 0))
    {


    /*
        Bump up the file buffer size a little bit for netstreams (to account for lag).
    */
    result = FMOD_System_SetStreamBufferSize(system, 64*1024, FMOD_TIMEUNIT_RAWBYTES);
              fichier = fopen("data/son.txt", "r+a");

 while (fgets(chaine, TAILLE_MAX, fichier) != NULL)
        {

            allo++; // On affiche la chaîne qu'on vient de lire
        }
fclose(fichier);


 const int MAX = allo, MIN = 0;

      srand(time(NULL));

nombreAleatoire = 0;
while (f != 6)
{

f++;

    nombreAleatoire = (rand() % (MAX - MIN + 1)) + MIN;
     c = nombreAleatoire ;

}
f=0;

 a = fopen("data/son.txt", "r+a");
 int op =0;
 while (op!= nombreAleatoire)
        {
            op ++;
         fgets(chaine, TAILLE_MAX, a);
        }
        printf("%s",chaine);
if (g==1)
{
printf ("allo");
result = FMOD_System_CreateSound(system2, chaine, FMOD_HARDWARE | FMOD_2D | FMOD_CREATESTREAM | FMOD_NONBLOCKING,  0, &sound);

while(l != 7)
{


           FMOD_System_PlaySound(system2, FMOD_CHANNEL_FREE, sound, FALSE, &channel);
           Sleep(365);
          l ++;
       }
       l =0;
    FMOD_System_CreateSound(system2,  "data/son/turning.wav", FMOD_CREATESAMPLE, 0,&tir);

                FMOD_System_PlaySound(system2, FMOD_CHANNEL_FREE, tir, 0, NULL);


}

if (g== 2)
{





}

        TranslateMessage(&message);
        DispatchMessage(&message);
    }
    return message.wParam;
}

LRESULT CALLBACK procedureFenetrePrincipale(HWND fenetrePrincipale, UINT message, WPARAM wParam, LPARAM lParam)
{
    static HWND boutons[2] = {NULL};

    switch (message)
    {
        case WM_CREATE:
                boutons[0] = CreateWindow("BUTTON", "Parler", WS_CHILD | WS_VISIBLE,

        5, 5, 383, 30, fenetrePrincipale, (HMENU)ID_B_PARLER, instance, NULL);

                boutons[1] = CreateWindow("BUTTON", "Quitter", WS_CHILD | WS_VISIBLE,5, 45, 383, 30, fenetrePrincipale, (HMENU)ID_B_QUITTER, instance, NULL);

            return 0;

        case WM_COMMAND:
            switch(LOWORD(wParam))
            {
                case ID_B_PARLER:

 g = 1;
                    break;

                case ID_B_QUITTER:
                     result = FMOD_Sound_Release(sound);

    result = FMOD_System_Close(system2);

                    SendMessage(fenetrePrincipale, WM_DESTROY, 0, 0);

                    break;
            }
            return 0;

        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;

        default:
            return DefWindowProc(fenetrePrincipale, message, wParam, lParam);
    }
}



et voici mon code d'erreur C:\Users\drec\Desktop\spirit box\source\spirit box\api\spirit box_api\main.cpp|56|error: cannot convert 'int (__attribute__((__cdecl__)) *)(const char*)' to 'FMOD_SYSTEM*' for argument '1' to 'FMOD_RESULT FMOD_System_Init(FMOD_SYSTEM*, int, FMOD_INITFLAGS, void*)'| j'attend de votre aide si vous voulez bien merci d'avance pour vos réponses :)
A voir également:

1 réponse

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
31 août 2017 à 02:48
c'est system2 qu'il faut ligne 56 pas system qui est une fonction
1
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
31 août 2017 à 12:52
Oui, d'autant plus que c'est bien le pointeur "system2" qui est est utilisé dans la fonction FMOD_System_Create(), et qui doit ensuite être utilisé dans chaque appel aux API : il y deux autres appels en lignes 63 et 108 qui ont ce même problème.

D'ailleurs, cette ligne 108 (et ce qui suit) semble placée dans la pompe de la boucle de messages Windows, qui va être bien encombrée en étant occupée à exécuter tout cela à chaque itération... alors qu'elle est sensée juste vérifier la file des événements Win32. Je doute que cherios veuille vraiment placer cela dans une boucle qui est sensée pouvoir s'exécuter plusieurs fois par seconde (en fait, je ne comprend pas ce qu'il veut faire).

Enfin, si cherios utilise l'interface C de FMOD, et développe en C avec l'API Windows, il devrait nommer son fichier main.c et non pas main.cpp et utiliser un compilateur C et non C++.

Dal
0