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 :

Comptabilité DLL C++ / Visual Basic


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Par défaut Comptabilité DLL C++ / Visual Basic
    Bonjour à tous,

    J'ai besoin d'aide sur le développement d'une dll en c++ qui serrais accessible dans une macros VBA.

    Je maintient depuis plusieurs années déjà une dll en visual C++ que je n'utilise d'habitude que dans des programmes en visual basic .net, ça fonctionne bien.

    Mais... Il fraudais que je puisse utiliser cette dll dans une macros, et c'est là que ça se corse...

    J'ais ajouté "[assembly:ComVisible(true)];" dans mon assemblyInfo, je fait une exportation via un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe DLL.dll /tlb:DLL.tlb /codebase DLL
    Mes classes et méthodes sont public :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    namespace DLL{
     
    	public ref class GENERAL
    	{
    	public:
     
    		static public int _stdcall  Connect(String ^Loging, String ^PassWord, String ^Groupe);
    je suis en /clr

    Quand je vais dans le gestionnaire de référence dans VBA, j'ai bien la référence "dll" disponible.

    Je la coche, par contre quand je vais dans l'explorateur d'objets, je voit bien mes classes (GENERAL par exemple), mais il n'y a aucune propriétés ni méthodes sous mes classes (pas d'ccé à Connect)...

    Je n'ai donc accès à rien...

    Quelqu'un a une solution?

    Un grand merci d'avances, trois jours de galère déjà...

  2. #2
    Candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Par défaut
    Bonjour,

    Personne n'a jamais fait ça ?

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    Je ne suis pas sûr qu'on puisse accéder à une méthode statique en COM...
    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.

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2013
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 93
    Par défaut
    Salut,

    As-tu essayer de forcer la déclaration dans ta macro comme ceci:

    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Declare PtrSafe Function DllFunction Lib "MyDLL.dll" (a as long, b as long, [arg]) as long 'pour une fonction avec un retour
    Private Declare PtrSafe Sub DllFunction Lib "MyDLL.dll" (a as long, b as long, [arg]) 'sinon

  5. #5
    Candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Par défaut
    Salut,

    Merci de vos réponses.


    Citation Envoyé par pepito3364 Voir le message
    Salut,

    As-tu essayer de forcer la déclaration dans ta macro comme ceci:

    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Declare PtrSafe Function DllFunction Lib "MyDLL.dll" (a as long, b as long, [arg]) as long 'pour une fonction avec un retour
    Private Declare PtrSafe Sub DllFunction Lib "MyDLL.dll" (a as long, b as long, [arg]) 'sinon




    Je me retrouve avec une erreur 48, "Erreur de chargement de la DLL"...

    @Médinoc Ça me parait bizarre quand même que l'on ne puisse pas exposer ces méthodes, de plus j'ai fait une dll toutes simple avec une seule fonction pour voir :
    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
    // testVBA.dll.h
     
    #pragma once
     
    using namespace System;
     
    namespace testVBAdll {
     
    	public ref class Class1
    	{
    		// TODO*: ajoutez ici vos méthodes pour cette classe.
    	public:
    		int ref;
     
    		int Connect(String ^Loging, String ^PassWord, String ^Groupe);
    	};
    }
    Mais je ne vois toujours rien...

    La solution n'est elle pas d’essayer de passer en non managé?

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/10/2010, 12h52
  2. Création de dll en visual basic 2005 Express
    Par CodeBleu dans le forum VB.NET
    Réponses: 6
    Dernier message: 17/04/2007, 08h44
  3. Réponses: 15
    Dernier message: 13/04/2006, 13h32
  4. Réponses: 7
    Dernier message: 09/11/2005, 02h17

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