DEV-C++ DLL VBA [Résolu]

Signaler
Messages postés
6
Date d'inscription
jeudi 5 octobre 2006
Statut
Membre
Dernière intervention
24 avril 2007
-
Messages postés
1
Date d'inscription
mardi 2 octobre 2007
Statut
Membre
Dernière intervention
2 octobre 2007
-
Bonjour,

Pour acceller un code Excel VBA, j'aimerais sous-traiter des taches a une dll. C'est possible et il y a plein d'exemples sur ce site. Mais pas en C++ avec DEV-C++.

J'ai des problemes de decorations dans le .def (en C++ mais pas en C). Au mieux, Excel me dit que mes requetes ne sont pas conventionnelles.

Les exemples que j'ai recupere sont developpe avec Visual C++ et marche tres bien.

Quelqu'un aurait-il pour un exemple tout con (e.g. fonction addition) :
- le projet DEV-C++ : toto.dev
- le code : toto.cpp & toto.h
- idealement le Makefile (je me mefie de celui generer automatiquement par DEV-C++)
- le toto.def
- un vba qui utilise toto.dll : youpla.bas

Un grand merci de la part d'un debutant !

3 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
Il y a un envoutement qui t'oblige à rester sur produits rustiques ???

VC++ 2005 Express est gratuit.
http://www.cppfrance.com/code.aspx?ID=38359

ciao...
BruNews, MVP VC++
Messages postés
6
Date d'inscription
jeudi 5 octobre 2006
Statut
Membre
Dernière intervention
24 avril 2007

non pas vraiment ...

je viens du monde hpux / linux et apres une breve recherche pour windows, j'ai trouve dev-c++ et il me plait bien

a force de bidouiller j'ai trouve les solutions pour interfacer correctement :
toto.h :
extern "C" __declspec(dllexport) double hello3(int i, double a);

toto.cpp :
double __stdcall hello3(int i,double a)
{
       double c;
       double b;
       b=58.;      
       c=i*(a+b);
       return c;
}

toto.bas :
Public Declare Function hello3 Lib "d:\toto.dll" (ByVal i As Long, ByVal m1 As Double) As Double

le extern "C" evite la decoration
le dllexport fait l'export
le _stdcall fait le passage

(desole pour mon chinois)
Messages postés
1
Date d'inscription
mardi 2 octobre 2007
Statut
Membre
Dernière intervention
2 octobre 2007

Bonjour,

J'ai bien essaye cette derniere methode. La dll est bien compilee et l'import declare dans un excel sheet. 

J'ai cree une fonction vba hello4 pour gerer l'appel de hello3 

Function hello4(i As Long, _
                m1 As Double)


    Dim lv_double As Variant
   
    lv_double = hello3(i, m1)


    hello4 = CDbl(lv_double)


End Function

Mais dans mon excel, hello4 me retourne le tragique et banal "


<colgroup>
<col style=\"WIDTH: 48pt\" width=\"64\" />
</colgroup>

----

#VALUE!".



Precisions, le code en C++ est genere avec Visual Studio 2005 C++ Express et j'utilise Excel 2003. Mon fichier .xls se trouve dans le meme repertoire que la .dll. Il me semblait que je devais aussi avoir un .lib pour gerer les appels de la dll?

Qu'aurais-je oublie dans le parametrage de mes API ?

Merci d'avance de la part d'un eternel debutant !