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