IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

DLL et vb 2008 Express edition


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut DLL et vb 2008 Express edition
    Bonjour,

    Ancien informaticien, je m’attaque pour la première fois à VB 2008 Express Edition, sous Vista. Je souhaite programmer une interface avec une station météo via un port série. Le constructeur fourni une DLL de fonctions avec deux fichiers : Vantadepro.dll et Vantagepro.lib ainsi que des exemples de programmation. Ces exemples font référence à une instruction : Import « vantagepro.lib »
    Mais rien de tel dans VB 2008
    Voici un morceau de mon code (pas propre car uniquement en test)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Imports System.Runtime.InteropServices
    Public Class F_Démarrage
     
        Dim Date_DTS As DateTimeStamp
        Dim Retour As Long
        Declare Auto Function DownloadData_V Lib "C:\Windows\System32\vantagepro.dll" _
        (ByVal LaDate As DateTimeStamp) As Long
     
     
        Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Using com1 As IO.Ports.SerialPort = _
                My.Computer.Ports.OpenSerialPort("COM1", 19200)
            End Using
            Date_DTS.DTS_Minute = 0
            Date_DTS.DTS_Heure = 0
            Date_DTS.DTS_Jour = 3
            Date_DTS.DTS_Mois = 9
            Date_DTS.DTS_Année = 2008
            Retour = 0
            Retour = DownloadData_V(Date_DTS)
            Me.Retour.Text = Retour
        End Sub
    L’appel à la fonction de la DLL provoque l’erreur :
    Impossible de trouver le point d'entrée 'DownloadData_V' dans la DLL 'C:\Windows\System32\vantagepro.dll'.

    Par ailleurs l’enregistrement de la DLL via regsrv32 provoque le même type de problèmes (absence de point d’entrée).

    Il semble donc qu’il soit nécessaire d’utiliser le fichier .lib
    Mais comment faire ?????

    Merci d’avance pour vos réponses.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Alopia Voir le message
    L’appel à la fonction de la DLL provoque l’erreur :
    Impossible de trouver le point d'entrée 'DownloadData_V' dans la DLL 'C:\Windows\System32\vantagepro.dll'.
    Tu es sûr du nom de la fonction ? ce ne serait pas simplement DownloadData ? Regarde s'il n'y a pas un fichier .h qui accompagne la DLL, tu y trouveras la signature exacte de la fonction.

    Citation Envoyé par Alopia Voir le message
    Par ailleurs l’enregistrement de la DLL via regsrv32 provoque le même type de problèmes (absence de point d’entrée).
    regsvr32 sert pour enregistrer les DLL COM... apparemment ici c'est plutôt une simple DLL native, donc regsvr32 ne sert à rien

    Citation Envoyé par Alopia Voir le message
    Il semble donc qu’il soit nécessaire d’utiliser le fichier .lib
    Mais comment faire ?????
    Non, le fichier .lib ne sert que dans les projets C/C++. Il contient la "plomberie" de l'appel aux fonctions de la DLL, de sorte que tu aies juste besoin de linker avec ce fichier.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour et merci pour vos réponses.
    Mais : Le nom de la fonction est le bon, le problème est le même pour toutes les fonctions. Je suis d'accord que regsrv32 est inutile, de même que .lib en VB.
    J'ai essayé deux solutions:
    Declare function
    et Pinvoke avec DLLImport
    Le résultat est identique.
    La DLL fonctionne en C et avec un basic standard.
    Je crainds donc un problème de compatibilité entre la DLL et Visual Basic 2008 express edition.
    Merci Bill ?

  4. #4
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    si c'est vraiment ça, merci plutot à ceux qui ont écrit la dll...

    Qu'appelles tu sinon un basic standard ?
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Alopia Voir le message
    J'ai essayé deux solutions:
    Declare function
    et Pinvoke avec DLLImport
    Le résultat est identique.
    Normal : la syntaxe Declare existe encore pour la compatibilité avec VB6, mais en interne ça utilise DllImport.
    Citation Envoyé par Alopia Voir le message
    La DLL fonctionne en C et avec un basic standard.
    Je crainds donc un problème de compatibilité entre la DLL et Visual Basic 2008 express edition.
    Merci Bill ?
    Qu'est-ce que tu appelles un "basic standard" ? VB6 ?

    Essaie de faire quelques ajustements sur ton Declare, enlève le mot-clé "Auto" par exemple. Ou alors, en utilisant DllImport, essaie de jouer sur les différents paramètres disponibles (ExactSpelling par exemple)

Discussions similaires

  1. SQL Server 2008 Express Edition
    Par CARMIN dans le forum Outils
    Réponses: 1
    Dernier message: 05/10/2008, 19h37
  2. SQL 2008 Express Edition
    Par CARMIN dans le forum Administration
    Réponses: 1
    Dernier message: 26/09/2008, 19h11
  3. Problème pour lancer un fichier sous VB 2008 Express Edition
    Par bluetotoro dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/09/2008, 21h54
  4. Affichage d'une page Web en Visual Basic 2008 Express Edition
    Par Harry Covair dans le forum Windows Forms
    Réponses: 1
    Dernier message: 30/06/2008, 00h54
  5. Visual Studio 2008 Express Edition, demande d'information ?
    Par Mon_Compte dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 26/01/2008, 20h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo