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
Bonjour,
comment je peut trouver le lien où je trouverai la plus part de bibliotheques en c?


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
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
0
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
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
0
[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
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

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
0
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
Merci pour l'info,bonne journée?
0
[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
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
0
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
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.
0
[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
Chez moi, cela fonctionne sur une machine XP Pro 32 bits avec un seul lecteur de CD/DVD.


Dal
0
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
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
0
[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
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
0

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
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.
0
[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
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 :

#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;
}
Chez moi, cela donne :

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
0
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
bonjour DAL

Ca fonctionne mais mon lecteur n'est pas toujours ejecté
0
[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
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
0
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
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.
0
[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
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
0
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
je cherche aussi pourquoi,
mais pour l'instant j'utilise windows vista et ca fonctionne très bien
0