Biblitheque en c
Fermé
jechmaki masudi
Messages postés
19
Date d'inscription
lundi 19 août 2013
Statut
Membre
Dernière intervention
22 septembre 2015
-
22 août 2013 à 16:32
jechmaki masudi Messages postés 19 Date d'inscription lundi 19 août 2013 Statut Membre Dernière intervention 22 septembre 2015 - 21 sept. 2013 à 11:16
jechmaki masudi Messages postés 19 Date d'inscription lundi 19 août 2013 Statut Membre Dernière intervention 22 septembre 2015 - 21 sept. 2013 à 11:16
6 réponses
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
28 août 2013 à 14:14
28 août 2013 à 14:14
Salut jechmaki masudi,
Si ce que tu cherches, c'est une référence pour la bibliothèque standard du C (ou du C++), ce site est une bonne référence :
http://www.cplusplus.com/reference/
Si ce que tu cherches est un site pour trouver toutes les bibliothèques pouvant par ailleurs exister, je ne connais pas un tel site.
Dal
Si ce que tu cherches, c'est une référence pour la bibliothèque standard du C (ou du C++), ce site est une bonne référence :
http://www.cplusplus.com/reference/
Si ce que tu cherches est un site pour trouver toutes les bibliothèques pouvant par ailleurs exister, je ne connais pas un tel site.
Dal
jechmaki masudi
Messages postés
19
Date d'inscription
lundi 19 août 2013
Statut
Membre
Dernière intervention
22 septembre 2015
1
3 sept. 2013 à 09:36
3 sept. 2013 à 09:36
Merci beaucoup DAL,mais je veux etre maintenant très claire :
je vois les autres faire des bonnes choses avec des bibliothèque et/ou des headers,mais moi je n'arrive meme pas alors que j'utilise le meme IDE qu'eux (Code::block).parexemple pour l'ejection du lecteur cd de mon ordinateur en utilisant le windows.h,ça ne fonctionne meme pas.
Est-ce que code::block contient deja tous ces headers?si non comment comment je peux les mettre?
pardon pour le dérangement mais j'ai vraiment envue de savoir utiliser les bibliotheques et les headers,UN LIVRE PEUT M'AIDER.
merci
je vois les autres faire des bonnes choses avec des bibliothèque et/ou des headers,mais moi je n'arrive meme pas alors que j'utilise le meme IDE qu'eux (Code::block).parexemple pour l'ejection du lecteur cd de mon ordinateur en utilisant le windows.h,ça ne fonctionne meme pas.
Est-ce que code::block contient deja tous ces headers?si non comment comment je peux les mettre?
pardon pour le dérangement mais j'ai vraiment envue de savoir utiliser les bibliotheques et les headers,UN LIVRE PEUT M'AIDER.
merci
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
3 sept. 2013 à 10:57
3 sept. 2013 à 10:57
Pour l'éjection du lecteur de CD, on t'a déjà répondu ici.
Sous Windows, la fonction mciSendString peut être utilisée pour cela.
Le prototype de cette fonction est dans l'entête Mmsystem.h, qui est inclus si tu inclue Windows.h.
Le rôle d'un entête (header) n'est pas de définir la fonction elle même, mais une interface permettant l'usage de cette fonction.
Comme indiqué dans le message précédent, l'implémentation de cette fonction se trouve dans Winmm.lib sous Windows, qu'il faut lier à ton projet pour que ton programme puisse utiliser effectivement le code implémentant cette fonction.
Tu peux obtenir ces informations dans la documentation Windows de mciSendString :
https://docs.microsoft.com/en-us/previous-versions//dd757161(v=vs.85)?redirectedfrom=MSDN
Comme tu le vois, on distingue le "Header" ('l'entête) de la "Library" (la bibliothèque comportant à proprement parler le code assurant l'exécution de la fonction).
Sur ton Codeblocks, l'installation du compilateur MinGW doit déjà contenir Windows.h à un endroit connu du compilateur. Donc, pour le header, il suffit de mettre #include <windows.h> dans les directives dans ton code source.
Donc, un code comme cela :
Si tu ne fais que cela, lorsque tu tentes de produire un exécutable, tu vas avoir une erreur de liaison indiquant "undefined reference to mciSendString".
Pour le code correspondant à la fonction mciSendString, tu vas devoir indiquer dans les paramètres de ton projet la référence à Winmm.lib afin que le linker puisse produire un fichier exécutable utilisant le code correspondant.
Dans Codeblocks, tu fais cela en faisant :
Tu tapes : "Winmm" (sans les guillements), et tu valides.
Dal
Sous Windows, la fonction mciSendString peut être utilisée pour cela.
Le prototype de cette fonction est dans l'entête Mmsystem.h, qui est inclus si tu inclue Windows.h.
Le rôle d'un entête (header) n'est pas de définir la fonction elle même, mais une interface permettant l'usage de cette fonction.
Comme indiqué dans le message précédent, l'implémentation de cette fonction se trouve dans Winmm.lib sous Windows, qu'il faut lier à ton projet pour que ton programme puisse utiliser effectivement le code implémentant cette fonction.
Tu peux obtenir ces informations dans la documentation Windows de mciSendString :
https://docs.microsoft.com/en-us/previous-versions//dd757161(v=vs.85)?redirectedfrom=MSDN
Requirements Minimum supported client Windows 2000 Professional [desktop apps only] Minimum supported server Windows 2000 Server [desktop apps only] Header Mmsystem.h (include Windows.h) Library Winmm.lib DLL Winmm.dll Unicode and ANSI names mciSendStringW (Unicode) and mciSendStringA (ANSI)
Comme tu le vois, on distingue le "Header" ('l'entête) de la "Library" (la bibliothèque comportant à proprement parler le code assurant l'exécution de la fonction).
Sur ton Codeblocks, l'installation du compilateur MinGW doit déjà contenir Windows.h à un endroit connu du compilateur. Donc, pour le header, il suffit de mettre #include <windows.h> dans les directives dans ton code source.
Donc, un code comme cela :
#include <stdio.h> #include <windows.h> int main() { printf("Hello CD Player\n"); if (mciSendString("Set cdaudio door open wait", 0, 0, 0) == 0) { printf("CD Player opened\n"); } else { printf("Error, failed to open the CD Player\n"); } return 0; }
Si tu ne fais que cela, lorsque tu tentes de produire un exécutable, tu vas avoir une erreur de liaison indiquant "undefined reference to mciSendString".
Pour le code correspondant à la fonction mciSendString, tu vas devoir indiquer dans les paramètres de ton projet la référence à Winmm.lib afin que le linker puisse produire un fichier exécutable utilisant le code correspondant.
Dans Codeblocks, tu fais cela en faisant :
Project - Build options - Linker settings - Add
Tu tapes : "Winmm" (sans les guillements), et tu valides.
Dal
juliemiss
Messages postés
94
Date d'inscription
jeudi 20 décembre 2012
Statut
Membre
Dernière intervention
12 octobre 2013
57
3 sept. 2013 à 11:00
3 sept. 2013 à 11:00
Merci pour l'info,bonne journée?
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
3 sept. 2013 à 13:57
3 sept. 2013 à 13:57
Sinon, il y a des instructions plus génériques ici :
https://forums.commentcamarche.net/forum/affich-37594493-codeblocks-installer-une-bibliotheque-librairie
pour une méthodologie d'installation d'une bibliothèque compilée non déjà présente sur le système, pour laquelle tu dois indiquer à Codeblocks où se trouvent les entêtes additionnels et où se trouvent les fichiers contenant les bibliothèques compilées à lier à ton projet (et indiquer lesquels)
Bonne journée aussi :-)
Dal
https://forums.commentcamarche.net/forum/affich-37594493-codeblocks-installer-une-bibliotheque-librairie
pour une méthodologie d'installation d'une bibliothèque compilée non déjà présente sur le système, pour laquelle tu dois indiquer à Codeblocks où se trouvent les entêtes additionnels et où se trouvent les fichiers contenant les bibliothèques compilées à lier à ton projet (et indiquer lesquels)
Bonne journée aussi :-)
Dal
jechmaki masudi
Messages postés
19
Date d'inscription
lundi 19 août 2013
Statut
Membre
Dernière intervention
22 septembre 2015
1
9 sept. 2013 à 07:23
9 sept. 2013 à 07:23
Waouh,
c'est très gentil DAL.
Merci vraiment beaucoup pour cet explication.
voici:" Project - Build options - Linker settings - Add ",je l'ignorais,mais je viens de l'essaiyer ça me fabrique le .exe mais MON LECTEUR N'EST PAS TOUJOURS EJECTE.
c'est très gentil DAL.
Merci vraiment beaucoup pour cet explication.
voici:" Project - Build options - Linker settings - Add ",je l'ignorais,mais je viens de l'essaiyer ça me fabrique le .exe mais MON LECTEUR N'EST PAS TOUJOURS EJECTE.
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
9 sept. 2013 à 12:06
9 sept. 2013 à 12:06
Chez moi, cela fonctionne sur une machine XP Pro 32 bits avec un seul lecteur de CD/DVD.
Dal
Dal
jechmaki masudi
Messages postés
19
Date d'inscription
lundi 19 août 2013
Statut
Membre
Dernière intervention
22 septembre 2015
1
9 sept. 2013 à 12:22
9 sept. 2013 à 12:22
Moi,j'ai windows xp pro version 2002 pack 3.
je viens d'utiliser ce code :
#include <stdio.h>
#include <windows.h>
int main()
{
printf("Hello CD Player\n");
if (mciSendString("Set cdaudio door open wait", 0, 0, 0) == 0)
{
printf("CD Player opened\n");
} else
{
printf("Error, failed to open the CD Player\n");
}
return 0;
}
En utilisant votre correction :
Project - Build options - Linker settings - Add
je viens d'utiliser ce code :
#include <stdio.h>
#include <windows.h>
int main()
{
printf("Hello CD Player\n");
if (mciSendString("Set cdaudio door open wait", 0, 0, 0) == 0)
{
printf("CD Player opened\n");
} else
{
printf("Error, failed to open the CD Player\n");
}
return 0;
}
En utilisant votre correction :
Project - Build options - Linker settings - Add
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
9 sept. 2013 à 12:46
9 sept. 2013 à 12:46
et lors de l'exécution, que dit le programme :
"CD Player opened" ou ""Error, failed to open the CD Player" ?
as-tu plusieurs lecteurs ?
Dal
"CD Player opened" ou ""Error, failed to open the CD Player" ?
as-tu plusieurs lecteurs ?
Dal
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jechmaki masudi
Messages postés
19
Date d'inscription
lundi 19 août 2013
Statut
Membre
Dernière intervention
22 septembre 2015
1
9 sept. 2013 à 14:30
9 sept. 2013 à 14:30
Salut DAL,pardons je n'étais pas en ligne...
A l'éxecution ça m'affiche :
"Hello CD player"
"CD Player opened"
Je n'ai qu'un seul lecteur CD.
A l'éxecution ça m'affiche :
"Hello CD player"
"CD Player opened"
Je n'ai qu'un seul lecteur CD.
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié par [Dal] le 9/09/2013 à 15:53
Modifié par [Dal] le 9/09/2013 à 15:53
C'est bizarre, car la commande MCI a l'air de l'exécuter sans erreurs, du point de vue de Windows.
Et si tu essayes ceci, cela donne quoi :
Ce code énumère les matériels MCI, et teste si le matériel "cdaudio" est capable d'éjection.
Dal
Et si tu essayes ceci, cela donne quoi :
Chez moi, cela donne :
#include <stdio.h>
#include <windows.h>
int main()
{
char szReturnString[500];
char szSendString[500];
long lNumOfDevice,l;
char *p;
if(mciSendString("Sysinfo all quantity", szReturnString, sizeof(szReturnString), NULL) != 0)
{
fprintf(stderr,"cannot query Sysinfo all quantity\n");
return(EXIT_FAILURE);
}
lNumOfDevice = strtol(szReturnString, &p, 10);
for(l = 1; l <= lNumOfDevice; l++)
{
wsprintf(szSendString,"sysinfo all name %d",l);
mciSendString(szSendString, szReturnString, sizeof(szReturnString), NULL);
printf("MCI Device(%ld):%s\n", l, szReturnString);
}
mciSendString("capability cdaudio can eject", szReturnString, sizeof(szReturnString), NULL);
printf("capability cdaudio can eject: %s\n", szReturnString);
return 0;
}
MCI Device(1):AVIVideo
MCI Device(2):CDAudio
MCI Device(3):Sequencer
MCI Device(4):WaveAudio
MCI Device(5):MPEGVideo
capability cdaudio can eject: true
Ce code énumère les matériels MCI, et teste si le matériel "cdaudio" est capable d'éjection.
Dal
jechmaki masudi
Messages postés
19
Date d'inscription
lundi 19 août 2013
Statut
Membre
Dernière intervention
22 septembre 2015
1
16 sept. 2013 à 12:28
16 sept. 2013 à 12:28
bonjour DAL
Ca fonctionne mais mon lecteur n'est pas toujours ejecté
Ca fonctionne mais mon lecteur n'est pas toujours ejecté
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
16 sept. 2013 à 12:57
16 sept. 2013 à 12:57
Je suppose que tu veux dire que tu as testé le code ci-dessus et que ton lecteur est bien énuméré et que le résultat de "capability cdaudio can eject" est bien "true". C'est bien cela ?
Il y a un truc qui cloche, ou qui m'échappe :-/
Et sous Windows, lorsque dans l'explorateur Windows tu cliques droit sur le lecteur et sélectionne "Ejecter", est-ce que cela fonctionne ?
Il y a un bouton d'éjection sur ton lecteur, fonctionne-t-il ?
Sinon, sur certains lecteurs, il y a aussi un moyen d'éjection purement mécanique : en introduisant un trombone déplié ou un autre objet suffisamment petit et rigide dans un petit trou prévu à cet effet sur la façade avant. A n'utiliser normalement que si le lecteur est mort et qu'un disque est resté coincé dedans... Il m'est arrivé de faire cela par le passé. Mais, bon, comme tu n'a pas l'air de dire que tu as un problème d'éjection par des moyens conventionnels, je doute que cela soit ce que tu cherches (ou alors tu nous a caché des choses).
Et puis, on est un peu loin de ta question initiale, je trouve :-D
Dal
Il y a un truc qui cloche, ou qui m'échappe :-/
Et sous Windows, lorsque dans l'explorateur Windows tu cliques droit sur le lecteur et sélectionne "Ejecter", est-ce que cela fonctionne ?
Il y a un bouton d'éjection sur ton lecteur, fonctionne-t-il ?
Sinon, sur certains lecteurs, il y a aussi un moyen d'éjection purement mécanique : en introduisant un trombone déplié ou un autre objet suffisamment petit et rigide dans un petit trou prévu à cet effet sur la façade avant. A n'utiliser normalement que si le lecteur est mort et qu'un disque est resté coincé dedans... Il m'est arrivé de faire cela par le passé. Mais, bon, comme tu n'a pas l'air de dire que tu as un problème d'éjection par des moyens conventionnels, je doute que cela soit ce que tu cherches (ou alors tu nous a caché des choses).
Et puis, on est un peu loin de ta question initiale, je trouve :-D
Dal
jechmaki masudi
Messages postés
19
Date d'inscription
lundi 19 août 2013
Statut
Membre
Dernière intervention
22 septembre 2015
1
19 sept. 2013 à 10:05
19 sept. 2013 à 10:05
Bonjour DAL,
Je suis très comptant,le programme d'éjection du lecteur CD a enfin fonctionné.
Mais cela était possible dans un autre system , pas le mien.
Moi,j'ai windows xp pro version 2002 pack 3.
Cela était possible dans windows 8.
Je suis très comptant,le programme d'éjection du lecteur CD a enfin fonctionné.
Mais cela était possible dans un autre system , pas le mien.
Moi,j'ai windows xp pro version 2002 pack 3.
Cela était possible dans windows 8.
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
19 sept. 2013 à 11:44
19 sept. 2013 à 11:44
Je suis content pour toi aussi :-)
Bonne découverte des joies de l'API Windows !
Je te confirme que, de mon côté, le code fonctionne sur un système XP Pro à jour. J'ignore la raison pour laquelle cela ne marche pas chez toi.
Cette API devrait fonctionner sur toutes versions de Windows depuis Windows 2000.
Dal
Bonne découverte des joies de l'API Windows !
Je te confirme que, de mon côté, le code fonctionne sur un système XP Pro à jour. J'ignore la raison pour laquelle cela ne marche pas chez toi.
Cette API devrait fonctionner sur toutes versions de Windows depuis Windows 2000.
Dal
jechmaki masudi
Messages postés
19
Date d'inscription
lundi 19 août 2013
Statut
Membre
Dernière intervention
22 septembre 2015
1
21 sept. 2013 à 11:16
21 sept. 2013 à 11:16
je cherche aussi pourquoi,
mais pour l'instant j'utilise windows vista et ca fonctionne très bien
mais pour l'instant j'utilise windows vista et ca fonctionne très bien