le 10-28-2013 05:59 AM
Bonjour,
J'expose mon problème, j'ai une application (sorte de lanceur) qui execute un VI via un appel de vi asynchrone (cf image lanceur).
Mais dans ce VI, j'ai une référence .NET sur un module USB-2001-TC (système d'acquisition de température via USB de chez Measurement computing).
Je crée ma distribution et mon executable, jusque là je n'ai aucun problème. Les soucis commencent lorsque je déploie ma distribution de source sur un pc qui n'a pas LabVIEW d'installé. Mon lanceur(.exe) se lance, je choisi mon package à lancer (le fameux VI avec la référence .NET) et là j'ai une erreur du type vi brisé à cause de cette référence.
PS: J'ai joins aussi en pièce jointe, le sous VI d'acquisition de température (avec référence .NET).
Merci.
Cdlt,
Résolu ! Accéder à la solution.
le 10-28-2013 06:04 AM
le 10-28-2013 06:47 AM
Merci de votre réponse rapide.
Non justement, la DLL n'est pas référencée (car je ne sais pas faire). J'ai essayé sur un autre pc de développement (avec labview 2012 d'installé) de lancer mon application et il me génère un nouveau chemin <GAC>\DAQFlex.dll vers un nouvel emplacement C:\Programmes x86\National Instruments\...
Je suis sûr à 100% que le problème vient de là.
Cdlt,
le 10-28-2013 07:46 AM
Bonjour,
Avez vous ajouté l'assembly dans votre projet ? Est-ce qu'elle est distribuée avec votre application (sous dossier, racine, etc) ?
D'après ce document :
http://digital.ni.com/public.nsf/allkb/C4EA5ABBEB67AF7C862573F3004D4421
Le comportement semble logique.
Avez vous essayé de placer l'assembly dans un des dossiers cité dans la KB ?
Cordialement,
le 10-28-2013 07:52 AM
Ce que je fais, c'est de faire une distribution de code sous format LLB (non pas une hiérarchie), j'ai essayé de copier DAQFlex.dll dans le répertoire de la LLB et aussi dans le dossier "data" mais j'ai toujours le même problème.
Concretement, je lance mon application comme ceci Biblio.LLB\Main.vi via l'appel asynchorne par contre je vois mal comment je pourrais faire pour copier une dll dans une LLB
. J'ai aussi essayé de mettre la dll dans mon projet et copier sur la machine cible là aussi j'ai toujours le vi brisé
le 10-28-2013 08:05 AM
Lorsque je compile le code tout fonctionne correctement ![]()
le 10-28-2013 09:08 AM
le 10-28-2013 09:15 AM
"Il faudrait que votre application de lancement charge l'assembly en plaçant un appel de méthode / propriété de celui-ci. Ca devrait peut être résoudre le problème."
Je ne vois pas ce que c'est.
Autre question : Peut-on utiliser les "appels (a)synchrone" pour lancer un executable labview?
le 10-28-2013 10:25 AM
Je crée ma distribution et mon executable, jusque là je n'ai aucun problème. Les soucis commencent lorsque je déploie ma distribution de source sur un pc qui n'a pas LabVIEW d'installé. Mon lanceur(.exe) se lance, je choisi mon package à lancer (le fameux VI avec la référence .NET) et là j'ai une erreur du type vi brisé à cause de cette référence.
C'est bien "Mon lanceur.exe" qui appelle le fichier de la llb ?
Pour que l'assembly soit chargé en mémoire, il faudrait placer une méthode / propriété de celui-ci dans le lanceur, comme ça celui-ci sera en mémoire et prêt à être chargé.
Sauf si vous ne pouvez pas changer le code de "Mon lanceur".
C'est une rustine, certes mais je ne vois que cette solution.
Cordialement,
le 10-29-2013 04:38 AM
Bonjour,
Oui effectivement, mon lanceur.exe lance la LLB via l'appel asynchrone.
Je peux bien sur modifier mon lanceur, je suis en cours de développement. J'avais essayé une petite ruse du type "ouvrir la référence" et de le passer en paramètre mais cela revient à la m^^eme chose (fil brisé).
Petite ruse que j'ai developpé hier soir, c'est de compilé cette partie et communiquer avec les datasockets (transmission et réception de la valeur de température) mais bon ce n'est pas beau d'un point de vue programmation, j'ai un VI/exe qui s'execute à coté de la fenêtre principale.
Cdlt,