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 :

Padding m�moire VBA / C++


Sujet :

C++

  1. #1
    Membre confirm�
    Inscrit en
    Avril 2013
    Messages
    93
    D�tails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 93
    Par d�faut Padding m�moire VBA / C++
    Bonjour,

    Je rencontre un probl�me en voulant utiliser des structure an argument de fonction entre une dll C++ et le VBA.
    J'utilise visual studio 2010.

    Code C++
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    struct ms
    {
    	int a;
    	double b;
    };
     
    __declspec(dllexport) double __stdcall  Cpp_Test(ms *i)
    {
    	return i->a + i->b;
    }
    Code VBA
    Code vba : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Declare PtrSafe Function Cpp_Test Lib "MyDLL.dll" (i As ms) As Double
     
    Type ms
        a As Long
        b As Double
    End Type
     
    Sub Test()
        Dim i As ms
        i.a = 12
        i.b = 3.14
        MsgBox Cpp_Test(i)
    End Sub

    Cela ne marche pas car je perd ma valeur de b. J'ai le sentiment qu'il y a un probl�me d'alignement et je n'arrive pas � le r�gler.
    J'ai essay� d'utiliser le mot clef: sur ma structure mais �a ne change rien.

    Auriez-vous une id�e du probl�me et comment le r�soudre s'il vous pla�t?

    Merci!

  2. #2
    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
    Auriez-vous une id�e du probl�me et comment le r�soudre s'il vous pla�t?
    En utilisant COM, c'est fait pour �a.

    Les layouts m�moire entre VBA et C++ n'ont rien de commun entre eux, et le layout du C++ est variable ad nauseam par les options de compilation, les versions des compilateurs, et sans compter le layout de VB qui peut changer � chaque version du moteur d'ex�cution.

    La seule solution p�renne est de pass� par un layout non ambigu� entre les 2 runtimes/langages.

    Et COM est fait pour, et dispose des outils d�di�s.

    Mais la courbe d'apprentissage de COM est raide (encore plus maintenant avec le manque de r�f�rence compl�te sur cette technologie obsol�te (comme VBA d'ailleurs)).

    Si c'est pour faire passer une malheureuse structure avec 2 pauvres champs, le plus simple serait de changer la signature pour faire passer ces 2 champs sous forme de 2 param�tres distincts.

    Sinon, il faut d�finir les structures �chang�es dans une type-librairie en les d�finissants un fichier IDL.
    Puis utiliser les d�di�s de VBA et de C++ pour se servir de ces types COM.

    Mais, bon, faudrait quand m�me pens� � laisse VBA reposer en paix (RIP).

  3. #3
    Membre confirm�
    Inscrit en
    Avril 2013
    Messages
    93
    D�tails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 93
    Par d�faut
    Merci pour les informations.
    Je passe plus de 2 arguments d'ou l�int�r�t des structures.
    Apr�s plusieurs tests, j'ai pu trouver l'alignement. Je mets donc l'alignement depuis Visual a 4 octets et mes donn�es restent int�gre.

    Effectivement, la courbe d'apprentissage sur les objets COM est grande!

    Malheureusement je ne peux pas me passer du VBA et il lui reste encore quelques ann�es � survivre

  4. #4
    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
    Malheureusement je ne peux pas me passer du VBA et il lui reste encore quelques ann�es � survivre
    Utilisez COM.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [XL-2013] Aide m�moire VBA
    Par nibledispo dans le forum Macros et VBA Excel
    R�ponses: 5
    Dernier message: 23/09/2013, 15h13
  2. Probl�me de M�moire VBA WORD Mac G5 5go Ram
    Par kitcreanet dans le forum VBA Word
    R�ponses: 2
    Dernier message: 28/08/2006, 12h08
  3. [VBA-E]Allocation de m�moire aux variables
    Par DomBourti dans le forum Macros et VBA Excel
    R�ponses: 18
    Dernier message: 05/05/2006, 21h57
  4. [VBA-E]QueryTable et utilisation m�moire
    Par Pgs dans le forum Macros et VBA Excel
    R�ponses: 2
    Dernier message: 03/04/2006, 09h19
  5. [VBA-E] Saturation de la m�moire car trop de macros activ�es
    Par MrYoYo dans le forum Macros et VBA Excel
    R�ponses: 10
    Dernier message: 02/12/2005, 19h01

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