DEV-C++ DLL VBA

Résolu
fx_forum Messages postés 6 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 24 avril 2007 - 5 oct. 2006 à 13:59
Koryf21 Messages postés 1 Date d'inscription mardi 2 octobre 2007 Statut Membre Dernière intervention 2 octobre 2007 - 2 oct. 2007 à 19:07
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 oct. 2006 à 14:04
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++
3
fx_forum Messages postés 6 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 24 avril 2007
5 oct. 2006 à 18:11
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)
0
Koryf21 Messages postés 1 Date d'inscription mardi 2 octobre 2007 Statut Membre Dernière intervention 2 octobre 2007
2 oct. 2007 à 19:07
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 !
0
Rejoignez-nous