DLL Visual C++ 2005 To VBA-Excel - C++ - Programmation
Marsh Posté le 01-05-2007 à 18:45:51
Ben je suppose qu'en faisant un Declare Function my_function lib "my_dll" (.......) ça doit le faire.
Comme par exemple dans cet exemple trouvé sur le net :
"Declare Function lstrlenA Lib "Kernel32" (ByVal lpString As Any) As Long"
Au fait, tu sais écrire des Dll ?
Marsh Posté le 01-05-2007 à 22:54:17
Merci
Justement plus de pb pour appeler une dll à partir de VBA , mais justement je ne sais pas écrire de dll
Marsh Posté le 02-05-2007 à 00:26:03
Bon voici ce que j'ai fait:
J'ai créé un nouveau projet:
-CLR
-Class Library
Je l'ai appelé test.
J'aimerais exporter une fonction qui prends un double et qui renvoit ce double +1 (par exemple).
J'ajoute donc dans le fichier test.h la déclaration de ma fonction:
Code :
|
J'ajoute dans le fichier test.cpp la définition de ma fonction:
Code :
|
Je compile...
Marsh Posté le 02-05-2007 à 00:30:03
Ceci me crée un fichier test.dll, ma dll...
Je crée un projet sous VBA, avec un module contenant:
Public Declare Function DLLfonction Lib "D:\Visual Studio 2005\Projects\test\debug\test.dll" Alias "fct" (ByVal x As Double) As Double
Sub dlltest()
Dim x As Double
x = 1
Cells(1, 1) = DLLfonction(1)
End Sub
Je crée un bouton de commande qui lance ma dll depuis la feuille excel.
-> message d'erreur:
Erreur d'exécution '453':
Point d'entrée fct d'une DLL introuvable dans D:\Visual Studio 2005\Projects\test\debug\test.dll.
Marsh Posté le 02-05-2007 à 01:10:13
Dois-je déclarer ma fonction comme une méthode de la classe Class1 ?
J'ai vu la notion de table d'exportation et de décoration du nom de fonction, qu'on peut corriger en rajoutant un fichier .def (mais pas avec Visual C++ 2005), dois-je faire quelque chose de similaire ?
Merci de votre aide je vais chercher
Marsh Posté le 03-05-2007 à 08:51:09
Peut-être qu'en faisiant un
extern "C" __declspec( dllexport )
ça marchera mieux.
Marsh Posté le 03-05-2007 à 09:27:54
Bizarre, bizarre...
Le mot "double" a-t-il la même signification en C et en VBA ?
Marsh Posté le 03-05-2007 à 09:33:02
Oui
Mais je crois que n'ayant que la version Express de Visual C++, je ne peux créer que des dlls .NET...
Marsh Posté le 04-05-2007 à 19:45:43
Je n'ai pas eu le temps d'avancer.
J'ai donc deux questions.
1- Puis-je créer des DLLs classiques win32 avec le compilateur Visual C++ 2005 Express ?
2- Comment créer des DLLs .NET, et comment les appeler depuis VBA ?
Marsh Posté le 04-05-2007 à 22:11:25
andrea13new a écrit : Je n'ai pas eu le temps d'avancer. |
Aucune idée pour les deux questions.
Pose ta question sur le forum .net
Marsh Posté le 05-05-2007 à 04:02:26
Pour la première question, la réponse est oui. Aucune idée pour la 2nde, par contre...
Marsh Posté le 05-05-2007 à 09:57:28
Ah bon ?
Mais quand je veux créer un nouveau projet je n'ai pas le choix pour les Dlls de faire une Win32, tu es sur ?
Marsh Posté le 05-05-2007 à 13:37:53
Certain. Je suis sur Linux maintenant, mais à mon prochain retour sous windows (à un moment ou un autre dans la journée, pas de souci ), je regarderais les réglages de mon projet...
Marsh Posté le 05-05-2007 à 14:47:52
Je me suis débrouillé en installant la plate-forme SDK, je peux maintenant effectivement créer des DLLs Win32, reste à apprendre à le faire !
Marsh Posté le 05-05-2007 à 19:06:26
Donc voila j'ai crée un projet Win32, DLL.
J'ai ajouté une fonction fct, que j'aimerais exporter sous VBA.
Code :
|
Code :
|
Code :
|
Code :
|
Sous VBA, j'ai le même pb qu'au début, le point d'entrée de ma DLL est introuvable..
Marsh Posté le 06-05-2007 à 09:53:19
J'ai vu la notion de table d'exportation et de décoration du nom de fonction, qu'on peut corriger en rajoutant un fichier .def mais je ne vois pas comment rajouter un fichier .def dans mon environnement Visual C++.
Marsh Posté le 30-04-2007 à 12:44:11
Salut,
Je cherche un exemple de:
-Création d'une DLL sous Visual C++ 2005
-Utilisation de cette DLL sous VBA-Excel
Je n'ai rien trouvé de clair sur le net
Merci beaucoup