Discussions au sujet des autres produits NI

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

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 Compliments
Message 1 sur 24
4 980 Visites
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 Compliments
Message 2 sur 24
4 977 Visites
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 Compliments
Message 3 sur 24
4 970 Visites

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 sur 24
4 959 Visites

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 Compliments
Message 5 sur 24
4 947 Visites
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 Compliments
Message 6 sur 24
4 931 Visites

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 Compliments
Message 7 sur 24
4 918 Visites
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 Compliments
Message 8 sur 24
4 915 Visites
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 sur 24
4 911 Visites
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 sur 24
4 903 Visites