[VBA] appels fonctions .dll C/C++

appels fonctions .dll C/C++ [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 16-08-2006 à 15:34:42    

J'ai réussi à créer une dll que j'appelle dans une fonction VBA. Mais il se passe un problème:  
'Erreur d'exécution 453'  
Point d'entrée introuvable

Pourtant j'ai bien mis #include <windows.h>, export
Comme Maximillion, je cherche un bon tutorial ou une explication bien fournie merci de ne pas m'indiquer :
http://rp.developpez.com/vb/tutoriels/dll/


Message édité par Kimilsung le 16-08-2006 à 16:04:30
Reply

Marsh Posté le 16-08-2006 à 15:34:42   

Reply

Marsh Posté le 16-08-2006 à 15:49:46    

compilo ? environnement ?
pourquoi tu ne veux pas de ce tutoriel ?


---------------
Töp of the plöp
Reply

Marsh Posté le 16-08-2006 à 16:03:25    

_darkalt3_ a écrit :

compilo ? environnement ?
pourquoi tu ne veux pas de ce tutoriel ?


compilo? Dev C++ 4.9.9.2
environnement? Windows Xp mais si possible portable vers d'autres
pourquoi tu ne veux pas de ce tutoriel ? déjà lu. Il m'indique pas les erreurs des points d'entrée.
En fait tout baigne (presque), sauf que VBA (sous Excel) n'arrive pas à trouver la fonction dans la dll

Reply

Marsh Posté le 16-08-2006 à 23:27:51    

ta dll, comment l'appelles tu ? est-ce une dll COM ? comment l'as tu compilée ?
poste le code VBA dans lequel tu appelles ta dll


Message édité par Harkonnen le 16-08-2006 à 23:29:56

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-08-2006 à 09:53:46    

Mon fichier dll s'appelle Dll_fichier.dll

Citation :

est-ce une dll COM ?


Qu'est-ce t'appelles une dll COM? C'est quoi?
 

Citation :

comment l'as tu compilée ?


Dans Dev C++ Fichier>Nouveau>Projet> Dll projet C++.
 
Le fichier libDll_fichier.def contient :
EXPORTS
 _Z10HelloWorldv@0 @ 1
 _Z10HelloWorldv = _Z10HelloWorldv@0 @ 2
 
-----  dll.h -----

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <windows.h>
  4. #define export __declspec(dllexport) /* définit la macro EXPORT  */
  5. export void __stdcall HelloWorld(void );
  6. int __stdcall Addition( int a, int b);


----- dllmain.cpp -----

Code :
  1. #include "dll.h"
  2. int __stdcall Addition( int a, int b){
  3.     int c;
  4.     c=a+b;
  5.     return c;   
  6. }
  7. void __stdcall HelloWorld(void )
  8. {
  9.     MessageBox(NULL,"Hello !","Message",MB_OK);
  10. }


 
Je précise je suis sous Excel.
 --- code VBA ---

Code :
  1. Public Declare Sub HelloWorld Lib "C:\Dll\Dll_fichier.dll" ()  ' mon répertoire
  2. Public Declare Function Addition Lib "C:\Dll\Dll_fichier.dll" (a As Long, b As Long) As Long
  3. Sub test()
  4.     Dim retour As Long 'code de retour de la fonction de la Dll
  5.     Call HelloWorld
  6.     retour = Addition(2, 3)
  7.     MsgBox retour
  8. End Sub


Voilà j'espère que ça peut aider.
Je dispose également de Cygwin.


Message édité par Kimilsung le 17-08-2006 à 09:54:42
Reply

Marsh Posté le 17-08-2006 à 11:30:11    

t'as déclaré une réference à ta dll par le menu Outils->Références ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-08-2006 à 15:13:59    

J'ai déclaré aucune référence. Outils -> Références ça existe pas sous Dev C++.
Sinon je peux le compiler à la Linux avec cygwin. Déjà essayé aussi par de point d'entrée  :( .

Reply

Marsh Posté le 17-08-2006 à 15:18:25    

Kimilsung a écrit :

J'ai déclaré aucune référence. Outils -> Références ça existe pas sous Dev C++.


euh... non, c'est dans Excel qu'il faut la déclarer


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-08-2006 à 15:44:34    

Ah oui pardon!
Dans Microsoft Visual Basic j'ajoute la référence et il me répond "impossible d'ajouter une référence au fichier spécifié". Mon fichier se trouve dans C:\Dll . Je ne suis pas administrateur sur ma machine. Merci quand même.
Sinon personne connaît un bon tutorial??

Reply

Marsh Posté le 25-08-2006 à 09:43:37    

Est-ce possible de faire passer des vecteurs ?
 
(x() as long) dans Excel -> double* en C++ ?

Reply

Marsh Posté le 25-08-2006 à 09:43:37   

Reply

Marsh Posté le 25-08-2006 à 09:59:55    

ou plutot  (x() as double) dans Excel -> double* en C++ ? ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed