Discussions au sujet des autres produits NI

cancel
Showing results for 
Search instead for 
Did you mean: 

Creer un dll

Bonjour,
 
je suis debutant sur labView, je commence tout doucement a faire des VI's, je possède une version de labView 6i de base.
 
J'aurai voulu creer une dll avec labView. Donc j'ajoute un element "Call library function node" et je crée un fichier .c ! Quand je regarde le code source du .c crée,
Il m'inclut un fichier "#include "extcode.h"" ... Hors je ne dispose pas de ce fichier et donc j'ai une erreur a la compilation (pour compiler j'utiliser Dev-C++).
 
Qu'est ce qu'il me manque pour pouvoir réaliser des dll ?
Est ce du aufait que je ne dispose qu'une version de base ?
Est ce que j'ai sauté une étape ?
 
Par la même occasion je me permet de vous demander si vous n'auriez pas de la doc concernant la création de dll?
 
Merci de votre futur aide.
 
 
0 Kudos
Message 1 of 24
(5,967 Views)
En fait, le bloc "Call library function" sert à appeler une fonction d'une DLL crée par ailleurs. Tu peux cependant créer ta propre DLL. Pour cela, la fonction de crée un fichier .c vide et se configure pour aller pointer les fonctions de ce fichier.

Après, c'est tout pour toi... Il faut remplir le fichier... Et le extcode.h est à créer aussi, c'est un fichier .h standard que tu pourrais remplacer par n'importe quel  fichier .h de ton choix.

A+

Raoul Chodziesner-Bonne
Ingénieur Instrumentation
CRIL TECHNOLOGY - Groupe ALYOTECH

"Celui qui pose une question peut paraitre idiot sur le moment, celui qui n'en pose pas le reste toute sa vie!"
0 Kudos
Message 2 of 24
(5,964 Views)
Bonjour,
 
Lors de l'essaie de compilation d'un code assez simple :
 
/* Call Library Source File */
long sum(long a, long b);
long sum(long a, long b)
 {
 int sum;
 sum = a + b;
 return sum;
 }
 
J'obtien un erreur a la compilation :
 
[Linker error] undefined reference to `WinMain@16' ...
 
A quoi est ce du ?
 
Désolé je débute au niveau de labView ainsi que de la programmation de dll pour labView.
 
Merci
 
0 Kudos
Message 3 of 24
(5,957 Views)

Bonjour,

Pour créer une DLL avec Dev-C++, il vaut mieux passer par un projet DLL : File > New > Project en choisissant le langage approprié (dans notre cas le langage C ).

Attention en créant le projet : NE PAS METTRE D'ESPACE dans le NOM DU PROJET, la DLL ne se compilerait pas (GCC gère mal les espaces).

Ensuite, il faut modifier le code que Dev-C++ nous génère par défaut :

En utilisant la convention d'appel standard comme ici :

__declspec(dllexport) _stdcall TypeDeFonction LaFonction(paramètres de la fonction)

{

// Code de la fonction

}

Ensuite en compilant le projet, on obtient bien notre DLL :

Puis sous LabView on utilise le VI Appeller une fonction DLL :

On clique deux fois sur ce VI, et on obtient la fenêtre suivante :

On choisi notre DLL puis sous Nom de la fonction on choisi la fonction présente dans notre DLL)

Enfin sous l'onglet paramètres on sélection le type de retour de notre fonction, et les paramètres de celle-ci :

On peut finalement utiliser notre DLL :

Vous trouverez en fichier joint les fichiers utilisés pour cet exemple.

En espérant que cela vous a aidé.

Cordialement,



Message Edité par Maxime MULLER le 02-01-2008 03:23 AM
Message 4 of 24
(5,946 Views)

Merci beaucoup pour voter réponse.

Je vais tester ca de suite après.

 

Merci encore, je vous tien au courant pour d'autre question si jamais ...

Merci 🙂

0 Kudos
Message 5 of 24
(5,934 Views)
Bonjour,
Excusez moi d'abuser de votre patience et de votre gentilesse ...
 
Mais serait il possible d'avoir un exemple avec des strings ?
 
Il y a une histoire de pointeur que je ne comprend pas vraiment ... Je veux dans un premier temps betement recuperer un String en entrée et ke réafficher en sortie ... Je sais que c'est con ... Mais bon ... ca pourrait m'ider a comprendre la manipulation de string ...
 
Comme ca dans la seconde etape, je pourrais utiliser des strcmp pour effectuer différentes taches suivant le code obtenu dans la fonction.
 
Voici le code inscrit mais qui ne fonctionne pas des masses 😞
__declspec(dllexport) _stdcall CStr traimentCode(CStr code)
 {
                      return (code);
 }
 
 
merci d'avance.
 
0 Kudos
Message 6 of 24
(5,918 Views)

Bonjour,

La fonction Appeller une DLL ne prend pas en compte le type "string" dans les paramètres d'appel, je vous conseil d'utiliser le type "char" plutôt :

__declspec(dllexport) char *Test(char *chaine)
{
 return chaine;
}

Cordialement,

0 Kudos
Message 7 of 24
(5,905 Views)
Quand je crée ma fonction avec labView ... Et qu'il me demande de lui inscrire les parametres en entrée et en sortie ...
Je ne peux choisir char parmis les parametres ... Mais uniquement du string ... Enfin pour le parametre de sortie en tout cas !
 
C'est peut etre moi qui m'y prend mal ... Enfin merci de votre aide ! Je vais jeter un oeil a ca !
 
 
Dite moi ... Vous n'auriez pas par hasard un tutorial concernant la réalisation et conception :
1) Driver
2) Dll
 
... Merci d'avance 🙂
0 Kudos
Message 8 of 24
(5,902 Views)
Bonjour,
 
J'ai du mal m'exprimer vous obtenez bien cette fenêtre pour les paramètres de la fonction ?
 
 
Pour ce qui est de la création de DLL je vous invite à regarder ce tutorial : http://zone.ni.com/devzone/cda/tut/p/id/4877.
 
Pour les drivers, vous voulez parler de drivers d'instruments ou drivers de périphériques ?
 
Cordialement,


Message Edité par Maxime MULLER le 02-01-2008 07:28 AM
Message 9 of 24
(5,898 Views)
salut,

c'est vrai que developper sa premiere DLL en C/C++ pour labview n'est pas evident
mais vu qu'on l'a deja fait, on va te donner un coup de main !!
dis nous exactement ce que tu veux developper et dans quel environnement C/C++

il y a un autre tutorial pas tres a jour aussi pour creer une DLL depuis Visual C++
http://zone.ni.com/devzone/cda/tut/p/id/3056
et un autre avec les clusters : http://zone.ni.com/devzone/cda/epd/p/id/3852

en ce qui concerne le fichier "extcode.h",
il decrit les types particuliers labview, il est copie a l'installation de labview (avec sa bibliotheque et autres fichiers .h)  :
voici l'emplacement : "C:\Program Files\National Instruments\LabVIEW xx\cintools"
le manuel pour utiliser ces fonctions est a l'emplacement : http://digital.ni.com/manuals.nsf/websearch/8D930295FFBF9F7686256D2C00624728

pour le retour d'un CStr, voici un exemple de fonction C++ :

#include "extcode.h"
extern "C" __declspec(dllexport) CStr __cdecl MaPremiereFonction(void);
[...]
__declspec(dllexport) CStr __cdecl MaPremiereFonction(void)
{
return (CStr)"Mes premiers mots sous LabVIEW !!!";
}
adeline.

Message 10 of 24
(5,890 Views)