DLL Visual C++ 2005 To VBA-Excel
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:
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:
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:
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