begin process at 2012 05 29 17:38:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Problème d'interfacage d'une DLL écrite en C++ avec vba


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème d'interfacage d'une DLL écrite en C++ avec vba

jeudi 15 septembre 2005 à 19:12:52 | Problème d'interfacage d'une DLL écrite en C++ avec vba

pierrinot

Bonjour,

Je dois créer une DLL utilisable par un programme VBA. Je tombe sur un problème d'entête de fonctions.

La DLL est bien compilée, mais lorsque je m'en sers sur excel, je suis obligé de supprimer une valeur des paramètres.

En C++ :

void _stdcall Initialize
(
    int n0,
    int n1,
    int n2,
    int n3
)

Dans vba :
Public Declare Function Initialize _
    Lib "C:\Documents and Settings\...\testDLL.dll" _
    ( _
    ByVal n0 As Long, _
    ByVal n1 As Long, _
    ByVal n2 As Long)

Problème de types ?
J'ai essayé avec Integer ça donne la même chose.
(je recharge la dll avant de tester)

Je souhaiterais également faire des classes à utiliser ensuite en vba, mais ça semble difficile à faire.

Existe t'il de la literature sur ce sujet ?

Merci à tous !
jeudi 15 septembre 2005 à 22:53:09 | Re : Problème d'interfacage d'une DLL écrite en C++ avec vba

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
Jamais vu qu'on supprime des params d'une dll, doit y avoir un malaise dans la dll, faudrait voir pour diagnostiquer. Param int ou long depuis dll doit être 'As Long' depuis VB et pas autre chose.

Des classes dans la dll ??? A part la faire grossir inutilement je ne vois pas l'intérêt.

ciao...
BruNews, MVP VC++
vendredi 16 septembre 2005 à 00:28:24 | Re : Problème d'interfacage d'une DLL écrite en C++ avec vba

nicooooo1

Membre Club


bsr,
D apres moi la déclaration de la fonction serait plutot :

Public declare sub Initialise..........
et pas function
vendredi 16 septembre 2005 à 08:40:42 | Re : Problème d'interfacage d'une DLL écrite en C++ avec vba

pierrinot

Merci pour l'info des classes, je souhaitais utiliser des classes pour définir les intrants de la fonction - mais si c'est une pratique qui ne se fait pas, ça me convient trés bien.

Je pense que j'ai un problème de compilation, j'ai récupéré un code source sur ce site, j'arrive à utiliser la DLL livrée mais pas celle que j'obtiens aprés compilation.

Pas de littérature sur les DLL et autres techniques Microsoft ?
Y a t-il une limitation sur le nombre de paramètres à passer en paramétre ?
Faut-il plutôt utiliser WINAPI ou bien _stdcall ?

Bien des éléments me sont encore obscurs...

En tout cas, merci les gars pour vos réponses claires et rapides !

vendredi 16 septembre 2005 à 09:32:34 | Re : Problème d'interfacage d'une DLL écrite en C++ avec vba

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
WINAPI est un alias de __stdcall donc idem.

DLL C ET ASM POUR VB
http://www.cppfrance.com/code.aspx?id=20672

ciao...
BruNews, MVP VC++
vendredi 16 septembre 2005 à 10:36:24 | Re : Problème d'interfacage d'une DLL écrite en C++ avec vba

pierrinot

Merci,

J'ai trouvé ce livre qui semble intéressant :
http://books.global-investor.com/books/20387.htm?ginPtrCode=10202

Sinon, je pense que j'ai réellement un problème d'option de compilation car toutes les fonctions que je créé en ne passant rien en paramètre fonctionne, ça plante dès que je mets des paramètres (même un).

Et pourtant je sais que le programme rentre dans la DLL, mais je ne sais pas à quel moment ça plante.

...

vendredi 16 septembre 2005 à 11:07:16 | Re : Problème d'interfacage d'une DLL écrite en C++ avec vba

BruNews

Administrateur CodeS-SourceS
C'est l'export qui doit déconner.
Tu reprends bien le modèle de celle dont j'ai donné le lien au dessus ?
Tu bosses sur VC++ ?

ciao...
BruNews, MVP VC++
vendredi 16 septembre 2005 à 11:17:29 | Re : Problème d'interfacage d'une DLL écrite en C++ avec vba

pierrinot

Réponse acceptée !
C'est bon ça fonctionne, je pense qu'il y avait plusieurs problèmes imbriqués :

- Mauvaise correspondance des types entre VC++ et VBA
- Et mauvaise définition du .h

Voilà ce que j'ai maintenant :

#ifdef TESTDLL_EXPORTS
#define TEST_DLL_API __declspec(dllexport) __stdcall
#else
#define TEST_DLL_API __declspec(dllimport) __stdcall
#endif

extern "C" long TEST_DLL_API GetTestValue(long value);

Merci pour vos aides !



Cette discussion est classée dans : vba, problème, long, int, dll


Répondre à ce message

Sujets en rapport avec ce message

problème de dll pour VBA pour un nul [ par wismerhill__ ] Bonjour à tous, je suis grand débutant en C++ et je m'y met apres VBAJe voudrais faire une dll en c++ car VBA ne va assez vite, le problème c'est que Probleme de convention? d'appel de dll dans vba [ par Jbs106 ] J'ai ouvert un projet en vc++ studio express 2008. projet win32, dll, nommée tutorial, et dans le fichier tutorial.cpp, j'ai ajouté trois fonctions: chargement d'une DLL impossible [ par totoscill ] Bonjour, Je rencontre un problème lors de l'execution de mon application (je travaille sous XP et visual studio 2008). Mon processus fait appelle à Mince ! Mon flux fstream fonctionne très mal [ par Davy974 ] Bonjour à tour, mon code ne fonctionne pas très bien ! Sauriez vous dire pourquoi ! ------------fstream.h----------------------- #ifndef CORE_FSTREA Gestion des long int [ par kiira31 ] Bonjour, Je code en ce moment la fonction printf. Je suis en train de gerer l affichage d'un nombre mais j'ai un souci pour gerer les long. Voici mo Code::Block DLL pour l'utiliser dans VB [ par runo ] Bonjour, je souhaite créer une DLL en C (ou C++) avec Code::Block que j'utiliserai ensuite sous VB (en fait excel 2003)... Je crée donc mon projet DL problème avec l'alias d'une DLL [ par marco62118 ] bonjour j'ai créé une dll avec "visual 2008 c++ express" apparement la dll est créé je l'utilise dans un programe VB mais lors de la déclaration " problème pour utiliser une DLL en C [ par aurhas ] Bonjour, j'ai une DLL FTDI pour laquelle je dispose des fichiers dll, lib et h. J'ai également une doc pour décrire les fonctions, leurs paramètres e Problème pendant link avec dll [ par svince ] Bonjour, Je travaille sous Eclipse/Windows en C++. J'ai créé une dll à partir d'un premier projet. Je souhaite utiliser cette dll dans un second proj problème de allocation de tableau [ par boualiasma ] Bonsoir, Je voulais copier le contenu de fichier "exemple.txt" dans un tableau dynamique t de taille inconnue en avance. J'utilise le tableau pour fa


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,323 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales