Lire un fichier xm

skirby Messages postés 96 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 26 juillet 2007 - 15 avril 2005 à 14:14
skirby Messages postés 96 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 26 juillet 2007 - 15 avril 2005 à 22:52
Bonjour à tous,





J'aimerais savoir si il est possible de lire un fichier xm en C.


J'ai vu qu'il existait une librairie "mfmplayer.lib" qui peut être
utilisée depuis l'assembleur. Mais est-il possible de l'utiliser aussi
en C (sous Dev-C++ notamment)





J'ai essayé d'utiliser cette librairie mais je me heurte toujours à des
messages d'erreurs à la compilation (lorsque j'appelle une fonction de
la librairie) du genre :





[Linker error] undefined reference to `mfmPlay@4'





Si vous connaissez un lien où je pourrais trouver des infos je suis preneur.





Merci d'avance pour votre aide.

13 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 avril 2005 à 14:41
Une lib dont on se sert en asm on s'en sert idem en C, faut bien spécifier la convention d'appel dans la déclaration des fonctions (__stdcall ou autre)..

ciao...
BruNews, MVP VC++
0
skirby Messages postés 96 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 26 juillet 2007
15 avril 2005 à 15:17
Salut BruNews,



Je pense avoir bien fait les choses mais visiblement non.



J'ai mis dans les options de mon projet (Project option / Linker) la libraire mfmplayer.lib



Voila quelques morceaux de mon code:



extern "C" void STDCALL mfmPlay(VOID*); // Fonction dans la librairie



// Appel de la fonction de la librairie

LPVOID pMusic;

...

pMusic = GlobalAlloc(GPTR, nMusicSize + sizeof(nMusicSize));

...

mfmPlay(pMusic);

...



Lorsque je compile j'ai ceci comme erreurs :



Warning: .drectve `-defaultlib:\masm32\lib\user32.lib ' unrecognized

Warning: .drectve `-defaultlib:\masm32\lib\kernel32.lib ' unrecognized

Warning: .drectve `-defaultlib:\masm32\lib\winmm.lib ' unrecognized

xm/mfmplayer.lib(mfmplayer.obj)(.text+0x1e):mfmplayer.asm: undefined reference to `waveOutRestart@4'

xm/mfmplayer.lib(mfmplayer.obj)(.text+0x35):mfmplayer.asm: undefined reference to `waveOutPause@4'

xm/mfmplayer.lib(mfmplayer.obj)(.text+0xa2):mfmplayer.asm: undefined reference to `waveOutReset@4'

xm/mfmplayer.lib(mfmplayer.obj)(.text+0xad):mfmplayer.asm: undefined reference to `waveOutClose@4'

xm/mfmplayer.lib(mfmplayer.obj)(.text+0x1f9):mfmplayer.asm: undefined reference to `waveOutOpen@24'

xm/mfmplayer.lib(mfmplayer.obj)(.text+0x460):mfmplayer.asm: undefined reference to `waveOutGetPosition@12'

xm/mfmplayer.lib(mfmplayer.obj)(.text+0x77f):mfmplayer.asm: undefined reference to `waveOutPrepareHeader@12'

xm/mfmplayer.lib(mfmplayer.obj)(.text+0x7c0):mfmplayer.asm: undefined reference to `waveOutWrite@12'

xm/mfmplayer.lib(mfmplayer.obj)(.text+0x864):mfmplayer.asm: undefined reference to `waveOutUnprepareHeader@12'

collect2: ld returned 1 exit status



make.exe: *** [test.exe] Error 1



Execution terminated



Et si je remplace STDCALL par CDECL j'obtient ceci comme erreurs :



main.o(.text+0x1fd):main.cpp: undefined reference to `mfmPlay'

main.o(.text+0x95f):main.cpp: undefined reference to `mfmPlay'



J'avoue être complétement bloqué là.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 avril 2005 à 15:43
je pensais à une lib de dll, assemble l'asm en dll avant et tu éviteras tous ces ennuis, tu obtiendras une lib utilisable facilement.
Faut aussi voir si ça vaut le coup, si tu as les fichiers asm, doit pas être grand-chose de transposer directement en C dans ton code.

ciao...
BruNews, MVP VC++
0
skirby Messages postés 96 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 26 juillet 2007
15 avril 2005 à 15:58
Je n'ai pas le code source en assembleur. Juste la librairie (.lib et .inc.

Par contre j'arrive à utiliser cette libraire en assembleur mais comme
je suis plus à l'aise avec le C j'aurais voulu l'utiliser directement
depuis Dev-C++



Tu saurais comment faire ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 avril 2005 à 16:10
En plus c'est Dev-C++, tu cumules les handicaps...
Essaie en ajoutant une référence linker sur Winmm.lib, devrait aider.

ciao...
BruNews, MVP VC++
0
skirby Messages postés 96 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 26 juillet 2007
15 avril 2005 à 16:30
Avec l'ajout de winmm.lib (récupérer dans mon dossier lib de masm32) ça semble compiler.



Cependant j'ai toujours des warnings:

Warning: .drectve `-defaultlib:\masm32\lib\user32.lib ' unrecognized

Warning: .drectve `-defaultlib:\masm32\lib\kernel32.lib ' unrecognized

Warning: .drectve `-defaultlib:\masm32\lib\winmm.lib ' unrecognized



Maitenant, c'est mon appli qui plante quand je l'exécute.

Je n'ai plus qu'a débuger et c'est pas gagné.



Sinon, tu n'aimes pas Dev-C++ ?

Que lui reproches-tu ?

Dans ce cas que me conseils-tu comme environnement de développement ?



Merci.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 avril 2005 à 16:37
Pour coder du Windows rien de tel que Visual Studio.

ciao...
BruNews, MVP VC++
0
skirby Messages postés 96 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 26 juillet 2007
15 avril 2005 à 16:48
Pour visual studio je suis d'accord mais il n'est pas gratuit



Sinon, mon programme plante sur l'appel à la fonction mfmPlay. Je ne vois vraiment pas comment je vais pouvoir débugger ça.



Je vais peut être abuser de ta patience mais si je t'envoi mes
fichiers, est-ce que tu pourrais y jetter un oeil (quitte à le faire
fonctionner sous VS) ?

Il y a un fichier C, RC (qui contient mon fichier xm) et puis les librairies.

Je ne me vexerai pas si tu refuses



Merci d'avance.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 avril 2005 à 17:18
pas le temps, désolé.

ciao...
BruNews, MVP VC++
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
15 avril 2005 à 18:42
ya une version étudiante gratuite pr VS

___________________________________________________________
Magicalement
Nono
0
skirby Messages postés 96 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 26 juillet 2007
15 avril 2005 à 18:54
Salut magic_Nono,



Je ne suis plus étudiant depuis longtemps

Je crois en plus qu'elle ne dispose pas de l'IDE mais seulement du compilateur.

Je me trompe ?
0
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
15 avril 2005 à 22:26
Skirby, moi aussi je suis étonné d'une version gratuite de VS...la seule version gratuite que j'ai de VC++ c'est une version qui m'interdit clairement ne serait-ce que de distribuer mes programmes gratuitement (on sent légèrement le capitalisme trop présent, c'est vraimant dommage) et qui intègre en + au moment de la compilation une messagebox qui me le rappelle! J'entends par là que chaque fois que je lançais un prog compilé ac ce VC++ ça affiché une messageBox() en Anglais précisant que c t illégal de redistribuer...enfin bref, perso je resterais sous Dev dans ces conditions surtout qu'il ne présente à mon gout en rien un handicap....

Sinon, pour ta question Skirby, je suis interessé par ton code : qu'est-ce qu'un fichier .xm ? Une extension spécialement inventée par toi ou c'est quoi? .xml je connais mais pas xm...
ça aurait pas un rapport avec du son ?? Je vois que tu as tenté de faire référence à des fonctions telles que wave_bidule... je serais interessé par ton code si tu as envie de me le montrer..jpourrais toujurs essayer de le compiler sous Dev chez moi..parfois c'est pas grand chose qui peut empecher une compilation et 2 esprits qui en cherchent la cause valent mieux qu'un

Sur ce, bonne soirée à tous

Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))
0
skirby Messages postés 96 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 26 juillet 2007
15 avril 2005 à 22:52
Salut Gendal67,



C'est plutôt cool de ta proposition.

Je fais comment pour te les envoyer mes fichiers ?

Sinon envoie moi un message perso avec ton email et je te ferai parvenir mes fichiers.



A demain et bonne soirée à tous aussi
0
Rejoignez-nous