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++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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   

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