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 C++ pour VBA


Sujet :

Visual C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre r�gulier
    Homme Profil pro
    �tudiant
    Inscrit en
    Novembre 2014
    Messages
    9
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 9
    Par d�faut Dll C++ pour VBA
    Bonjour,

    je suis d�butant en C++ et j'aimerais pouvoir acc�l�rer mes programmes VBA en cr�ant des fonctions en C++(utilisable une dll).
    Il y a �normement de chose sur internet sur la cr�ation de dll mais apr�s avoir cr�e ma dll, j'ai une erreur VBA "erreur 53 - dll introuvable" que je n'arrive absolument pas � comprendre


    voici le code de la dll (fonction square)

    // fichier square.cpp

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    #include "square.h"
     
    int __stdcall square(int x)
    {
    	return x*x;
    }
    j'ai ensuite cr�e un fichier de d�finition
    \\ DefFile.def

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    LIBRARY "DLL_VBA2"
    EXPORTS 
    square
    et un fichier d'en-tete

    \\square.h
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    #define export __declspec (dllexport) 
    export int __stdcall square(int);
    La dll est alors g�n�r�e et voila le code VBA pour l'appeler

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Public Declare PtrSafe Function square Lib "C:\DLL_VBA2.dll" (ByVal x As Integer) As Integer
        Sub test()
        Dim a As Integer
        Dim b As Integer
        a = 5
        b = square(a)
        End Sub
    Avec dependency walker, la fonction square contenue dans la dll est visible mais voil� le log que je r�cup�re:

    Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.
    Error: Modules with different CPU types were found.

    Toute id�e est la bienvenue

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    "different CPU Types" �a sent le probl�me de 64 bits, �a...
    Attends, le Depends, tu l'as fait sur quoi? La DLL ou le VB?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre r�gulier
    Homme Profil pro
    �tudiant
    Inscrit en
    Novembre 2014
    Messages
    9
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 9
    Par d�faut
    j'ai utilis� dependency walker sur la dll.

    En essayant de compiler aussi bien en win32 qu'en x64, j'obtiens les m�mes logs.

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Dans quel r�pertoire mets-tu la DLL? Je n'ai aucune id�e d'o� VBA tape.
    Voir aussi si tu peux la mettre dans un r�pertoire dans le PATH (ne pas oublier de quitter et relancer VBA si tu changes la variable d'environnement).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Moi, j'aurai pas fait une dll C++ Win32.
    J'aurai fait une Dll C++ COM, �a facilite grandement l'int�gration entre VBA et le code C++.
    Mais bon, faut connaitre COM et c'est pas une mince affaire.

    Win32 c'est une API pour l'OS, aussi bien en 64 bits qu'en 32bits.

    Le message d'erreur sugg�re un probl�me de compatibilit� binaire entre l'ex�cutable et la dll.

    Votre processus h�te de votre VBA est-il en 32bits ou en 64bits ?
    IA32/64 ou x86-64 ?
    ...

  6. #6
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Je pense qu'on peut ignorer le message d'erreur sur le CPU, s'il provient d'un simple Depends sur la DLL seule.

    @hadGP: As-tu fait un programme de test en C++ qui utilise la DLL?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre r�gulier
    Homme Profil pro
    �tudiant
    Inscrit en
    Novembre 2014
    Messages
    9
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 9
    Par d�faut
    je viens juste de le faire et la dll fonctionne tr�s bien
    c'est vraiment juste le passage en VBA qui bug

  8. #8
    Membre r�gulier
    Homme Profil pro
    �tudiant
    Inscrit en
    Novembre 2014
    Messages
    9
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 9
    Par d�faut
    @Medinoc: lors de la d�claration de la dll en VBA j'indique le path, dans mon cas pour simplifier je l'ai mis sur la racine C:\
    j'ai �galement essayer de la mettre dans system32 mais le message d'erreur persiste.

    Code VBA : S�lectionner tout - Visualiser dans une fen�tre � part
    Public Declare PtrSafe Function square Lib "C:\DLL_VBA2.dll" (ByVal x As Integer) As Integer

  9. #9
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Un petit probl�me entre les type VBA et les types C++ ?
    http://www.drivenbysteam.com/?p=158

Discussions similaires

  1. [D�butant] dll VB.NET pour VBA
    Par issoram dans le forum VB.NET
    R�ponses: 7
    Dernier message: 26/09/2013, 20h42
  2. dll C++ pour VBA : erreur 49 et 453
    Par EL0807 dans le forum C++
    R�ponses: 2
    Dernier message: 18/03/2006, 23h01
  3. DLL C++ pour VB 6?
    Par blackghost dans le forum MFC
    R�ponses: 7
    Dernier message: 18/07/2005, 01h25
  4. dll builder pour projet visual...?
    Par iznotek dans le forum C++Builder
    R�ponses: 8
    Dernier message: 12/01/2005, 19h27
  5. [DLL] probl�me pour appeler une fonction d'une DLL
    Par bigboomshakala dans le forum MFC
    R�ponses: 34
    Dernier message: 19/07/2004, 11h30

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