Kit de développement Comm/IP en Virtual Basic: Besoin d'aide

Kit de développement Comm/IP en Virtual Basic: Besoin d'aide

Messagepar jpp38 » 09 Août 2014, 17:44

Bonjour,

J'essaye de faire faire l'intégration de ma DLL Comm/IP "CDM_IPC.dll" (DLL Windows) avec Virtual Basic.
Ainsi que l'a dit Xavier, Virtual Studio refuse l'ajout de la référence de cette DLL car ce n'est pas un composant .COM.

En effet, ce n'est pas un composant .COM, ce qui, j'ai finis par démêler, correspond aux DLL "Active X".
Ne connaissant bien ce domaine, j'ai un peu surfé, et il ressort qu'il y a deux types de DLL: les DLL Active X, et les DLL Windows.
Et manque de bol, la mienne est une DLL Windows, alors que VB, en première approximation, ne gère que les DLL Active X, c'est une des limitations de VB.

Je dis bien en première approximation, car en surfant sur internet, il semble qu'il y ait des subterfuges pour accéder au DLL Windows.

Comme il est hors de question que je reprenne la DLL sous forme Active X (trop de travail), c'est donc la piste ci-dessus qu'il faut suivre: comprendre quoi faire pour accéder à une DLL Windows, depuis Virtual Studio.

Eric (EMA883) m'a communiqué le lien suivant
http://www.flipcode.com/archives/Interfacing_Visual_Basic_And_C.shtml
Il est très intéressant, mais malheureusement ne concerne que les DLL Active X.

Ce que j'ai compris, déjà, c'est qu'il faut créer un fichier .DEF pour déclarer la DLL et les fonctions exportées.
Ca, c'est pour le "linker" (éditeur de liens).

Je l'ai fait, mais pour le moment ça ne fait ni chaud ni froid à Virtual Studio.

Voilà où j'en suis.


Toutes les pistes sont bienvenues.

JP
jpp38
 
Messages: 11187
Inscrit le: 31 Mars 2009, 10:15
Localisation: Grenoble (Isère / Rhône Alpes)

Re: Kit de développement Comm/IP en Virtual Basic: Besoin d'aide

Messagepar gily » 10 Août 2014, 13:33

Alors là !! :shock:

il faudrait voir pour poster le sujet sur un forum VB, tu aurais sans doute plus de chance d'avoir une réponse.

Bon courage quand même car le sujet est ardu
gily
 
Messages: 1130
Inscrit le: 25 Juillet 2014, 14:32
Localisation: nord

Re: Kit de développement Comm/IP en Virtual Basic: Besoin d'aide

Messagepar jpp38 » 10 Août 2014, 19:14

Effectivement. Merci pour la suggestion.

JP
jpp38
 
Messages: 11187
Inscrit le: 31 Mars 2009, 10:15
Localisation: Grenoble (Isère / Rhône Alpes)

Re: Kit de développement Comm/IP en Virtual Basic: Besoin d'aide

Messagepar EMA883 » 15 Août 2014, 17:13

Bonjour,
voici un lien vers le site Microsoft, en espérant qu'il ne soit pas limité aux DLL Direct X ...
http://support.microsoft.com/kb/106553/fr

Eric
Echelle HO
PC sous W10 avec carte interface RS 232
Centrale Intellibox 650
Retosignalisation S-88 / Arduino
Moteurs d'aiguilles servo / Arduino
EMA883
 
Messages: 171
Inscrit le: 23 Juin 2012, 15:52
Localisation: La Seyne sur mer (sur la ligne Marseille - Vintimille)

Re: Kit de développement Comm/IP en Virtual Basic: Besoin d'aide

Messagepar jpp38 » 15 Août 2014, 19:00

Bonjour Eric,

Merci pour ce lien. En effet, j'avais déjà récupéré cet article très bien fait, et parfaitement au coeur du sujet.

J'ai déjà pas mal manipé autour de ça.
Ma DLL est bien détectée, à condition d'être mise dans le répertoire de l'éxécutable, ce qui est logique.
Mais le point sur lequel je bute, maintenant, est l'endroit où mettre le fichier ".DEF" dont il est question vers le milieu de cet article.
Le fichier .def est parfaitement identifié par ailleurs, parce qu'il est généré en même temps que ma DLL.
Donc où mettre ce satané fichier, et comment le faire prendre en compte par Visual Basic?

Il faut savoir que ce fichier .def sert à passer des options au linker, or en visual basic, le linker est complètement implicite: aucune option autour de ça.
Dans un langage classique, on passe le fichier de définition de module par une option du typer /DEF=>nom du fichier.def>
Là, je l'ai baladé dans la foultitude de répertoires de l'environnement VB, avec le même résultat: rien!

J'ai posé la question sur un forum de développement Visual Basic, et je n'ai eu aucune réponse.

Donc, je sèche toujours.

JP
jpp38
 
Messages: 11187
Inscrit le: 31 Mars 2009, 10:15
Localisation: Grenoble (Isère / Rhône Alpes)

Re: Kit de développement Comm/IP en Virtual Basic: Besoin d'aide

Messagepar EMA883 » 16 Août 2014, 00:19

Bonsoir JP
j'ai trouvé un autre lien sur un forum de développeurs pour créer une dll windows avec VB
il est question du fameux .DEF
d'après l'article il ne suffit pas de le créer, il faut aussi créer un "éditeur de lien de substution" pour que VB puisse l'utiliser
la réponse est peut être dedans?

http://bbil.developpez.com/traductions/vb6/create-dll/

Bon week-end
Eric
Echelle HO
PC sous W10 avec carte interface RS 232
Centrale Intellibox 650
Retosignalisation S-88 / Arduino
Moteurs d'aiguilles servo / Arduino
EMA883
 
Messages: 171
Inscrit le: 23 Juin 2012, 15:52
Localisation: La Seyne sur mer (sur la ligne Marseille - Vintimille)

Re: Kit de développement Comm/IP en Virtual Basic: Besoin d'aide

Messagepar jpp38 » 16 Août 2014, 07:16

Bonjour Eric,

Encore merci ;) .

Je l'avais aussi, et en effet, ça va être la manip. suivante. Mais j'avoue que j'y vais un peu à reculons, parce que, bien que le principe soit clair, je n'ai pas encore compris tout le détail de ce qu'il fait. Donc, si le moindre truc cloche, c'est râpé.
En fait, il faut que j'arrive à mieux comprendre cette mécanique d'enrobage complètement spécifique à VB. Et ce n'est pas de la tarte.

Mais c'est bien la seule piste qui me reste.

Cela dit, ce que je n'arrive pas à comprendre, c'est pourquoi un tas d'articles parlent du .def comme si c'était évident de l'utiliser avec VB, alors que ce dernier article indique bien que VB ne sait pas le prendre en compte directement (ce qui correspond à ce que je constate).

Bon week-end

JP
jpp38
 
Messages: 11187
Inscrit le: 31 Mars 2009, 10:15
Localisation: Grenoble (Isère / Rhône Alpes)

Re: Kit de développement Comm/IP en Virtual Basic: Besoin d'aide

Messagepar EMA883 » 23 Août 2014, 20:25

Bonsoir JP,
autre doc de MS sur l' appel de fonctions de la DLL à partir d'applications Visual Basic,
mais tu dois certainement connaitre...

http://msdn.microsoft.com/fr-fr/library/dt232c9t.aspx

Appel de fonctions de la DLL à partir d'applications Visual Basic:

Pour que des applications Visual Basic (ou des applications écrites dans d'autres langages tels que Pascal ou Fortran) appellent des fonctions dans une DLL C/C++, les fonctions doivent être exportées à l'aide de la convention d'appel correcte sans la décoration de noms effectuée par le compilateur.
__stdcall crée la convention d'appel correcte pour la fonction (la fonction appelée nettoie la pile et les paramètres sont passés de droite à gauche) mais décore le nom de la fonction différemment. Donc, quand le mot clé __declspec(dllexport) est appliqué à une fonction exportée d'une DLL, le nom décoré est exporté également.
La décoration de nom __stdcall fait précéder le nom du symbole d'un trait de soulignement (_) et annexe au symbole arobase (@) suivi du nombre d'octets dans la liste d'arguments (l'espace de pile requis). Lorsqu'elle est déclarée en tant que :
int __stdcall func (int a, double b)
la fonction est alors décorée de la manière suivante :
_func@12
La convention d'appel C (__cdecl) décore le nom en tant que _func.
Pour obtenir le nom décoré, utilisez /MAP. L'utilisation du mot clé __declspec(dllexport) produit l'effet suivant :
Si la fonction est exportée à l'aide de la convention d'appel C (_cdecl), elle supprime le trait de soulignement de début (_) quand le nom est exporté.
Si la fonction exportée n'utilise pas la convention d'appel C (par exemple, __stdcall), elle exporte le nom décoré.
Comme il n'existe aucun moyen de substituer les cas où le nettoyage de pile se produit, vous devez utiliser __stdcall. Pour supprimer la décoration des noms au moyen de __stdcall, vous devez spécifier les noms à l'aide d'alias dans la section EXPORTS du fichier .def. Cette approche est illustrée ci-dessous pour la déclaration de fonction suivante :

int __stdcall MyFunc (int a, double b);
void __stdcall InitCode (void);
Dans le fichier .DEF :
EXPORTS
MYFUNC=_MyFunc@12
INITCODE=_InitCode@0
Pour que les DLL puissent être appelées par des programmes écrits en Visual Basic, la technique des alias décrite dans cette rubrique est nécessaire dans le fichier .def. Si l'alias est utilisé dans le programme Visual Basic, l'utilisation des alias dans le fichier .def n'est pas nécessaire. Elle peut être intégrée dans le programme Visual Basic par l'ajout d'une clause d'alias à l'instruction Declare.

Désolé de ne pouvoir t'aider d'avantage :oops:
Eric
Echelle HO
PC sous W10 avec carte interface RS 232
Centrale Intellibox 650
Retosignalisation S-88 / Arduino
Moteurs d'aiguilles servo / Arduino
EMA883
 
Messages: 171
Inscrit le: 23 Juin 2012, 15:52
Localisation: La Seyne sur mer (sur la ligne Marseille - Vintimille)

Re: Kit de développement Comm/IP en Virtual Basic: Besoin d'aide

Messagepar jpp38 » 24 Août 2014, 07:42

Bonjour Eric,

J'avais plus ou moins vu qu'il y avait un piège à ce niveau. Donc merci pour l'info, c'est toujours intéressant à connaître.
Mais mon problème de base est toujours de faire avaler le .DEF au linker.

Je n'ai pas le temps du tout de m'en occuper sur le mois qui vient (bande passante 0). Je reprendrai les essais après le 15 septembre.

Encore merci de t'intéresser au problème.

JP
jpp38
 
Messages: 11187
Inscrit le: 31 Mars 2009, 10:15
Localisation: Grenoble (Isère / Rhône Alpes)

Re: Kit de développement Comm/IP en Virtual Basic: Besoin d'aide

Messagepar jpp38 » 24 Août 2014, 11:12

En fait même avant le .DEF, la grosse difficulté que j'ai, c'est qu'il semble qu'il y ait beaucoup de variantes du "Basic", contrairement au C.
Le C c'est un langage simple, parfaitement défini. Il n'y a pas le C de tel ou tel autre.

La "salade" commence, pour moi, entre Visual Studio, Visual Basic, et VB6.

Je dis ça, parce que le fameux article où il est question de remplacer le linker par un fichier en basic, fait allusion à des exécutables de l'environnement qui s'appellent C2.EXE et LINK.EXE (compilateur et linker respectivement).
Mais manque de bol, dans mon environnement visual basic, il n'y a rien qui ressemble à ça.
C'est donc perdu d'avance de ce côté-là.

JP
jpp38
 
Messages: 11187
Inscrit le: 31 Mars 2009, 10:15
Localisation: Grenoble (Isère / Rhône Alpes)

Suivant

Retourner vers Fonctionnement en réseau: Comm/IP

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron