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

Visual C++ Discussion :

DLL Visual C++ 2005 To VBA-Excel


Sujet :

Visual C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par défaut DLL Visual C++ 2005 To VBA-Excel
    Salut,

    Je cherche un exemple de:
    -Création d'une DLL sous Visual C++ 2005
    -Utilisation de cette DLL sous VBA-Excel

    Je n'ai rien trouvé de clair sur le net
    Merci beaucoup

    voici ce que j'ai fait:

    J'ai créé un nouveau projet:
    -CLR
    -Class Library

    Je l'ai appelé test.

    J'aimerais exporter une fonction qui prends un double et qui renvoit ce double +1 (par exemple).

    J'ajoute donc dans le fichier test.h ce qui est en bleu:


    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
    //test.h 
    
    #pragma once 
     
    using namespace System; 
     
    _declspec(dllexport) double _stdcall fct (double x); 
     
    namespace test { 
      
     
     public ref class Class1 
     { 
      // TODO: Add your methods for this class here. 
       
     }; 
    }

    J'ajoute dans le fichier test.cpp ce qui est en bleu:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //test.cpp
    // This is the main DLL file. 
     
    #include "stdafx.h" 
     
    #include "test.h" 
     
    _declspec(dllexport) double _stdcall fct (double x){ 
     return x+1; 
    } 

    Je compile...

    Ceci me crée un fichier test.dll, ma dll...

    Je crée un projet sous VBA, avec un module contenant:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Declare Function DLLfonction Lib "D:\Visual Studio 2005\Projects\test\debug\test.dll" Alias "fct" (ByVal x As Double) As Double 
     
    Sub dlltest() 
     
    Dim x As Double 
    x = 1 
    Cells(1, 1) = DLLfonction(1) 
     
    End Sub

    Je crée un bouton de commande qui lance ma dll depuis la feuille excel.

    -> message d'erreur:

    Erreur d'exécution '453':

    Point d'entrée fct d'une DLL introuvable dans D:\Visual Studio 2005\Projects\test\debug\test.dll.


    Dois-je déclarer ma fonction comme une méthode de la classe Class1 ?

    J'ai vu la notion de table d'exportation et de décoration du nom de fonction, qu'on peut corriger en rajoutant un fichier .def (mais pas avec Visual C++ 2005), dois-je faire quelque chose de similaire ?

    Merci de votre aide je vais chercher

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    tu as crée une "class library assembly", donc une dll .net
    ce n'est pas utilisable comme ca sous vba

    fais une dll classique win32

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par défaut
    Citation Envoyé par nico-pyright(c)
    tu as crée une "class library assembly", donc une dll .net
    ce n'est pas utilisable comme ca sous vba

    fais une dll classique win32
    Merci
    J'ai joint une copie écran avec les choix possibles de projets sous Visual C++ 2005.
    Je n'ai pas trouvé à quoi correspond une dll classique.

    Qu'est-ce qu'une dll.net ?
    Bon je vais chercher des infos merci.
    Fichiers attachés Fichiers attachés

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    click sur win32 et choisi win32 project
    et coche dll

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par défaut
    Citation Envoyé par nico-pyright(c)
    click sur win32 et choisi win32 project
    et coche dll
    Avec win32 j'ai pas le choix d'une DLL après.
    Fichiers attachés Fichiers attachés

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    voila ce que je vois moi
    Images attachées Images attachées   

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par défaut
    Citation Envoyé par nico-pyright(c)
    voila ce que je vois moi
    D'accord, j'ai la version Microsoft Visual C++ Express c'est pour ça!
    Merci je vais voir si je peux me procurer la version standard, ou me débrouiller avec la version Express.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par défaut
    Citation Envoyé par Rimea Phosie
    D'accord, j'ai la version Microsoft Visual C++ Express c'est pour ça!
    Merci je vais voir si je peux me procurer la version standard, ou me débrouiller avec la version Express.

    Je n'ai pas eu le temps d'avancer.
    J'ai donc deux questions.
    1- Puis-je créer des DLLs classiques win32 avec le compilateur Visual C++ 2005 Express ?
    2- Comment créer des DLLs .NET, et comment les appeler depuis VBA ?

  9. #9
    Membre éprouvé Avatar de Capitaine Kirk
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Mars 2005
    Messages : 98
    Par défaut
    Bonsoir

    Rimea Phosie en téléchargeant microsoft platform sdk que tu trouveras ici Visual C++ 2005 Express Edition with the Microsoft Platform SDK et en suivant les instructions en dessous et en regardant les étapes en images que tu trouveras ici Visual C++ 2005 Express Edition Video Feature Tour tu pourras faire du Win 32.

    Capitaine Kirk.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par défaut
    Citation Envoyé par Capitaine Kirk
    Bonsoir

    Rimea Phosie en téléchargeant microsoft platform sdk que tu trouveras ici Visual C++ 2005 Express Edition with the Microsoft Platform SDK et en suivant les instructions en dessous et en regardant les étapes en images que tu trouveras ici Visual C++ 2005 Express Edition Video Feature Tour tu pourras faire du Win 32.

    Capitaine Kirk.
    Merci je suis en train d'installer ça.
    Par contre je ne comprends pas ce que je dois faire à l'étape 3:

    Step 3: Update the Visual C++ directories in the Projects and Solutions section in the Options dialog box.
    Add the paths to the appropriate subsection:

    Executable files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin
    Include files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include
    Library files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib
    Note: Alternatively, you can update the Visual C++ Directories by modifying the VCProjectEngine.dll.express.config file located in the \vc\vcpackages subdirectory of the Visual C++ Express install location. Please make sure that you also delete the file "vccomponents.dat" located in the "%USERPROFILE%\Local Settings\Application Data\Microsoft\VCExpress\8.0" if it exists before restarting Visual C++ Express Edition.



    J'ai joint ce que je vois de ma boite de dialogue Options où je dois ajouter les chemins en question mais je ne comprends pas la syntaxe.
    Fichiers attachés Fichiers attachés

  11. #11
    Membre éprouvé Avatar de Capitaine Kirk
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Mars 2005
    Messages : 98
    Par défaut
    Bonjour

    Rimea Phosie à partir de l'image que tu a joint tu cliques sur le petit dossier jaune une nouvelle ligne va apparaitre et là tu pourra parcourir tes dossiers pour aller chercher le répertoire C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin,ensuite tu va dans la liste déroulante et tu choisis Include files et la tu renouvelle l'opération avec le petit dissier jaune pour ajouter une nouvelle ligne et tu va chercher le répertire C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include, et tu fais de même pour le répertoire Lib. j'espère avoir été clair ? tiens je viens de remettre la main sur un tutoriel, je te joint le fichier tu verras c'est pas bien compliqué

    Capitaine Kirk.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par défaut
    Citation Envoyé par Capitaine Kirk
    Bonjour

    Rimea Phosie à partir de l'image que tu a joint tu cliques sur le petit dossier jaune une nouvelle ligne va apparaitre et là tu pourra parcourir tes dossiers pour aller chercher le répertoire C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin,ensuite tu va dans la liste déroulante et tu choisis Include files et la tu renouvelle l'opération avec le petit dissier jaune pour ajouter une nouvelle ligne et tu va chercher le répertire C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include, et tu fais de même pour le répertoire Lib. j'espère avoir été clair ? tiens je viens de remettre la main sur un tutoriel, je te joint le fichier tu verras c'est pas bien compliqué

    Capitaine Kirk.


    Merci beaucoup j'ai suivi les instructions et testé le projet du tutorial, ça marche
    Maintenant je suis de retour à la case départ avec les bons outils...
    Je dois donc apprendre à créer une DLL Win32 et l'exporter sous VBA

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par défaut
    Citation Envoyé par Rimea Phosie
    Merci beaucoup j'ai suivi les instructions et testé le projet du tutorial, ça marche
    Maintenant je suis de retour à la case départ avec les bons outils...
    Je dois donc apprendre à créer une DLL Win32 et l'exporter sous VBA

Discussions similaires

  1. Debug DLL visual c++ 2005
    Par fx007 dans le forum Visual C++
    Réponses: 4
    Dernier message: 06/06/2007, 12h06
  2. sqlite3.dll dans Visual Studio 2005 ?
    Par Luke58 dans le forum SQLite
    Réponses: 5
    Dernier message: 02/03/2007, 15h58
  3. Dev-c++ Class -> Dll -> Object Vba Excel
    Par fx_forum dans le forum Dev-C++
    Réponses: 6
    Dernier message: 06/10/2006, 19h34
  4. DLL avec Visual C++ 2005 Express
    Par Jloox dans le forum MFC
    Réponses: 5
    Dernier message: 09/03/2006, 18h24
  5. Réponses: 3
    Dernier message: 18/08/2005, 19h09

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