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

C++ Discussion :

DLL c++ sous VBA


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    21
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 21
    Par d�faut DLL c++ sous VBA
    J'ai un vrai probl�me!!

    Quelqu'un pourrait-il m'expliquer comment passer un tableau dans VBA en argument d'une DLL et comment faire en sorte de recuperer un tableau comme valeur de retour d'une DLL.

    En gros dans la definition de ma DLL en C++ comment faire pour que la DLL prenne un tableau vba en argument et renvoie un tableau vba

    et du cot� de vba comment faire pour mettre en argument dans la DLL un tableau et recuperer un tableau??

    J'ai essay� mille fois �a marche pas!!

    dans ma DLL j'ai �crit

    double* __stdcall Madll(long* tableau)
    {
    double* tabretour=new..... ;
    etc etc
    return tabretour ;
    }
    et en VBA

    declare fonctDLL lib "Madll.dll"(byref tableau() as long)
    ...
    dim vecteur() as double
    dim tableau() as long
    tableau(0)=...
    tableau(1)=...
    etc
    vecteur=fonctDLL(tableau)
    et �a plante

    de meme vecteur=fonctDLL(tableau(0))
    �a ne marche pas non plus!!!

    comment faire!!!

  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
    Essaie avec les SAFEARRAY.

    Par contre, je ne pense pas que tu puisses retourner � VB un SAFEARRAY allou� dans la fonction...
    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 averti
    Inscrit en
    Octobre 2007
    Messages
    21
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 21
    Par d�faut tableau en valeur de retour
    Dans ce cas comment je fais alors pour recuperer un tableau en sortie?

    a supposer que mon code C++ donne en sortie un double*

    comment je peux affecter ce pointeur(l'adresse) � une variable dans vba?

  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
    Je doute fort que tu puisses utiliser directement un double* en VBA.
    Tu peux peut-�tre essayer en retournant un SAFEARRAY de doubles et en fournissant �galement une fonction pour le d�truire, mais m�me �a je ne suis pas certain que �a marche.

    Edit: Y'a des chances que �a marche, en fait.
    Voir peut-�tre du c�t� de SafeArrayCreate()...


    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SAFEARRAY * CreateSafeArrayDoubles(unsigned long size)
    {
    	SAFEARRAYBOUND bounds[1];
     
    	bounds[0].lLbound = 0;
    	bounds[0].cElements = size;
     
    	return SafeArrayCreate(VT_R8, 1, bounds);
    }
    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 �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
    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.

Discussions similaires

  1. probleme de dll sous vba
    Par deubelte dans le forum Macros et VBA Excel
    R�ponses: 1
    Dernier message: 24/05/2007, 10h01
  2. [D8] Utilisation dll D7 sous D8
    Par smyley dans le forum Delphi .NET
    R�ponses: 2
    Dernier message: 01/11/2004, 11h28
  3. R�ponses: 8
    Dernier message: 07/10/2004, 11h08
  4. (VBA-A] Requete access sous VBA
    Par vanima dans le forum VBA Access
    R�ponses: 12
    Dernier message: 20/07/2004, 16h07
  5. Syntaxe PARAMETERS pour requ�te sous VBA
    Par GAGNON dans le forum VBA Access
    R�ponses: 3
    Dernier message: 28/11/2003, 11h39

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