Bonjour,
Je souhaiterais savoir s'il est possible de créer des dll sous visual basic 2005 express. J'arrive à utiliser les dll venant d'autres applications mais je n'arrive pas à en créer sous vb 2005.
Avez-vous des pistes ?
Merci d'avance
CodeBleu
Version imprimable
Bonjour,
Je souhaiterais savoir s'il est possible de créer des dll sous visual basic 2005 express. J'arrive à utiliser les dll venant d'autres applications mais je n'arrive pas à en créer sous vb 2005.
Avez-vous des pistes ?
Merci d'avance
CodeBleu
Salut,
Je sais que c'est possible sous Vs 2005, je sais pas par contre pour la version express, mais il y a de fortes chances pour que ça fonctionne.
Pour faire un dll, il faut par exemple faire un projet de type "Class Library" et le compilateur fait un .dll au lieu d'un .exe!
Voilà!
a+
Merci pour cette réponse, et tu as raison j'ai réussi à créer un fichier dll.
Pourrais-tu m'aider un peu plus, car j'ai un souci lors de le débogage de ma solution.
En fait, quand j'appelle la sub "SendParamRef" de la dll j'ai le message suivant :"Impossible de trouver le point d'entrée 'SendParamRef' dans la DLL 'RefrigData'.".
Voici, les paramètres que j'appelle ;
Public Declare Sub SendParamRef Lib "RefrigData" (ByVal Refrigerant As String, ByVal RefState As Double, ByVal Temperature As Double, _
ByVal SubCooling As Double, ByVal Superheat As Double, ByRef CyclePoints() As Double, ByRef ErrorMessage As Boolean)
Etant bien entendu que je passe en ByVal des entrées et j'ai des sortie avec ByRef dans ce cas.
Voilà si tu as quelques éclaircissement à me donner, j'en serais ravi !
CodeBleu
Salut,
Je ne comprends pas trop ce que tu fais.
Moi pour joindre une dll je fais click droit sur la solution -> ajouter une référence)
Ensuite comme ma librairie comprend une classe, je l'instancie et appel une méthode.
Ex :
Pour avoir accès à ma librairie, j'ai ajouter une référence comme expliquée ci-haut
Dim test as new librarie.test()
test.testerletest()
Aussi, pour tester ta librairie je te conseille d'utiliser 2 solutions distinces. 1 pour la librairie. 1 pour les tests.
Parce que l'erreur : Impossible de trouver le point d'entrée...
signifie que vs 2005 ne trouve pas dans quel méthode ton programme démarre. Si tu cliques sur les propriétés de ton projet - > startupobject ... tu ne peux en définir avec une libraire d'où l'idée d'utiliser un autre projet pour tester!
a+
Pour te préciser un peu le fonctionnement de mon programme son architecture de base est la suivante;
Le projet "OilSeparator" type (Consoleapplication) .exe appelle une dll "RefrigData" (classlibrary).
Le projet de démarrage est "OilSeparator", et j'ai regardé dans les propriétés et il est bien défini comme tel.
Je pense qu'il y a peut-être un problème du côté des paramètres qui sont définis pour certains en ByVal et d'autres en ByRef.
En fait, j'ai besoin de plusieurs informations de retour de la dll.
Et ces informations sont entre les parenthèses en ByRef.
Concernant ce que tu m'as expliqué sur l'instanciation pourrais-tu me donner un exemple plus précis pour que je comprennes bien ce que tu veux dire.
Merci encore pour ton aide,
CodeBleu
Salut,
En fait, tu sembles dire que le problème viendrais peut-être du fait des byval, byref, tu as esseyé de mettre tout par byval pour voir si l'erreur était la même ?
Ensuite, lorsque tu fais :
Public Declare Sub SendParamRef Lib "RefrigData" (ByVal Refrigerant As String, ByVal RefState As Double, ByVal Temperature As Double, _
ByVal SubCooling As Double, ByVal Superheat As Double, ByRef CyclePoints() As Double, ByRef ErrorMessage As Boolean)
J'ai l'impression que c'est comme si tu utilisais une mentalité de Vb6 et non de Vb.Net, mais peut-être je me trompe....
1. Si j'ai bien compris, tu dois déclaré ce que j'ai mis ci-haut pour pouvoir utiliser la méthode dans ton code ?
2. Tu as bien référencé ta dll comme je l'ai expliqué ?
a+
Kiboumz,
Merci pour tes réponses j'ai effectivement réussi à faire fonctionner mon programme tel que tu me l'avais conseillé. Le passage de paramètres est correct, c'était juste l'instanciation qui était mal faite.
Merci encore pour tes précieux conseils,
CodeBleu