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
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 ce qui est en bleu:
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 //test.h #pragma once using namespace System; _declspec(dllexport) double _stdcall fct (double x); namespace test { public ref class Class1 { // TODO: Add your methods for this class here. }; }
J'ajoute dans le fichier test.cpp ce qui est en bleu:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 //test.cpp // This is the main DLL file. #include "stdafx.h" #include "test.h" _declspec(dllexport) double _stdcall fct (double x){ return x+1; }
Je compile...
Ceci me crée un fichier test.dll, ma dll...
Je crée un projet sous VBA, avec un module contenant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 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.
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
Partager