Inclure une bibliothèque

Résolu/Fermé
kvjld35 Messages postés 22 Date d'inscription jeudi 12 mai 2016 Statut Membre Dernière intervention 13 juin 2016 - 12 mai 2016 à 09:27
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 12 mai 2016 à 17:14
Bonjour à tous,

Je suis totalement novice en programmation et actuellement en train de rédiger une application sous LabWindows/CVI en C je rencontre un léger problème qui vous paraîtra peut-être tout bête. J'ai besoin à un moment de créer un répertoire pour pouvoir ensuite stocker mes acquisitions, je connais la fonction mkdir mais le problème c'est qu'elle est définie dans la bibliothèque "sys/stat.h" or cette bibliothèque ne m'est pas disponible. Pour pouvoir l'utiliser dans mon projet doit-je la télécharger ? Si ou où ça ?

Merci d'avance pour le temps que vous prendrez pour me répondre.

1 réponse

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 12/05/2016 à 11:15
Bonjour kvjld35,

Tout d'abord, je n'utilise pas LabWindows/CVI, mais comme ta question ne reçoit pas de réponse d'utilisateurs de cet environnement (si tant est qu'il y en ait sur le forum), je me permets de t'apporter des éléments de réponse.

D'après la description de l'éditeur "LabWindows/CVI is an ANSI C integrated development environment and engineering toolbox with built-in libraries for measurement, analysis, and engineering".

Le C standard ANSI ne dispose pas de fonctions pour créer des répertoires.

<sys/stat.h> est un entête (pas une "bibliothèque") POSIX (Unix, BSD, Linux...) et cet entête est donc disponible sur les compilateurs C pour les systèmes POSIX, pas sur les compilateurs ANSI C.

https://pubs.opengroup.org/onlinepubs/009695399/functions/mkdir.html

Une recherche montre cependant que National Instruments semble avoir créé une fonction
int MakeDir (char directoryName[]);
pour leur compilateur, accessible par un entête <utility.h>.

https://zone.ni.com/reference/en-XX/help/370051T-01/cvi/libref/cvimakedir/

Alternativement, il semble qu'un accès à l'API Windows soit possible avec LabWindows/CVI avec ce qu'ils appellent le "Platform SDK" fournit avec LabWindows/CVI

https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019MNESA2

Si tel est le cas, tu peux aussi tenter d'utiliser la fonction
int _mkdir(const char *dirname);
disponible normalement sous Windows par l'entête <direct.h>

https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/mkdir-wmkdir?redirectedfrom=MSDN&view=msvc-160&viewFallbackFrom=vs-2019

Cette fonction est une version adaptée inspirée de la version POSIX.

Ou tenter d'utiliser la méthode Windows recommandée sous Windows en utilisant la fonction

BOOL WINAPI CreateDirectory(
  _In_     LPCTSTR               lpPathName,
  _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes
);


disponible si tu inclues l'entête <windows.h> normalement disponible sous Windows

https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createdirectorya?redirectedfrom=MSDN

Enfin, tu peux aussi poser ta question sur les forums de National Instruments (en langue anglaise), où tu trouveras certainement plus d'aide qu'ici, par des gens utilisant cet environnement de programmation.


Dal
0
kvjld35 Messages postés 22 Date d'inscription jeudi 12 mai 2016 Statut Membre Dernière intervention 13 juin 2016
12 mai 2016 à 11:44
Merci beaucoup Dal d'avoir pris le temps de me répondre surtout que ta première solution a parfaitement marché ! "MakeDir" marche très bien ! Tu m'aides grandement dans la construction de mon projet :-)
De plus tu m'as bien éclairé sur les bons termes à employer et sur les raisons de mon problème.

Comment as-tu réussi à trouver cette fonction si je puis me permettre ? Cela me permettra d'être plus autonome pour la suite ;)
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 12/05/2016 à 16:59
De rien :-)

Je ne me souviens pas exactement, mais pour MakeDir(), (après m'être documenté brièvement sur LabWindows/CVI), je pense que j'ai cherché "LabWindows/CVI create directory" dans Google (sans les guillemets) et je suis tombé sur une discussion de forum qui parlait de MakeDir, puis j'ai cherché à obtenir la documentation officielle de LabWindows/CVI sur cette fonction, en cherchant "LabWindows/CVI MakeDir" dans Google (toujours sans les guillemets).

La recherche sur ni.com avec leur moteur de recherche n'est pas aussi performante que celle de Google pour une pêche aux infos, mais une fois que tu sais ce que tu cherches, https://www.ni.com/en-us/contact-us.html peut te permettre de trouver la documentation concernant la version particulière de ton produit.

Par exemple, leur moteur (qui cherche cependant dans tous les produits NI et peut générer du bruit) permet de trouver https://zone.ni.com/reference/en-XX/help/370051AC-01/cvi/libref/cvimakedir/ qui est la page de documentation pour la version 2015 de LabWindows/CVI (celle que j'avais trouvée directement avec Google était pour la version 2010).

Pour le reste, mon post est une synthèse de mes connaissances et de recherches faites sur de multiples pages.

Bon courage pour ton projet.

Dal
0
kvjld35 Messages postés 22 Date d'inscription jeudi 12 mai 2016 Statut Membre Dernière intervention 13 juin 2016 > [Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024
12 mai 2016 à 17:01
Je n'ai plus qu'a te remercier pour tout ce que tu as fais pour moi, je saurai maintenant me débrouiller pour trouver les fonctions qui m'intéressent :-)

Bonne continuation à toi !
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 12/05/2016 à 17:14
Cela c'était une recherche rapide sur un problème dont ne n'étais pas familier.

Si je devais faire un projet substantiel, je trouverai une documentation de référence fiable.

Leur documentation est accessible sur le site sous la forme d'un fichier .zip, contenant plusieurs mégaoctets d'infos :

https://www.ni.com/en-us/support/documentation.html/f
https://www.ni.com/en-us/support/documentation.html/f (pour la version 2015)

Si j'étais toi, je téléchargerais la version qui me correspond et j'irais chercher le fameux "in-depth function reference for LabWindows/CVI libraries" dont ils parlent.


Dal
0