cherios
-
Modifié le 30 août 2017 à 07:03
[Dal]
Messages postés6204Date d'inscriptionmercredi 15 septembre 2004StatutContributeurDernière intervention27 février 2025
-
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 0int c =1;int d =0;int f =0;int g =0;int l =0;#define ID_B_QUITTER 1 #define TAILLE_MAX 1000int nombreAleatoire =0;char chaine[TAILLE_MAX]="";
FILE* fichier = NULL,*a = NULL;int allo =0;/* Create a system2 object and initialize. */HINSTANCEinstance;
LRESULT CALLBACKprocedureFenetrePrincipale(HWND, UINT, WPARAM, LPARAM);intWinMain(HINSTANCEcetteInstance,HINSTANCEprecedenteInstance,LPSTRlignesDeCommande,int modeDAffichage){FMOD_SYSTEM*system2;FMOD_SOUND*sound,*tir;FMOD_CHANNEL*channel =0;FMOD_RESULTresult;int key;unsignedint 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);HWNDfenetrePrincipale;MSGmessage;WNDCLASSclasseFenetre;
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 échoueif(!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);constint 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 CALLBACKprocedureFenetrePrincipale(HWNDfenetrePrincipale,UINTmessage,WPARAMwParam,LPARAMlParam){staticHWNDboutons[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);return0;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;}return0;case WM_DESTROY:PostQuitMessage(0);return0;default:returnDefWindowProc(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 :)
Dalfab
Messages postés706Date d'inscriptiondimanche 7 février 2016StatutMembreDernière intervention 2 novembre 2023101 31 août 2017 à 02:48
c'est system2 qu'il faut ligne 56 pas system qui est une fonction
[Dal]
Messages postés6204Date d'inscriptionmercredi 15 septembre 2004StatutContributeurDernière intervention27 février 20251 104 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++.
31 août 2017 à 12:52
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