OVH Cloud OVH Cloud

appel dll c++/visual basic

19 réponses
Avatar
cyril
Bonjour,

J'ai le petit qui suit. J'ai fait il y a quelques mois un programme
en Visual Basic (ben oui j'avais que ça sous la main) qui dessine des
fractales de Julia et Mendelbrot.
Pour accélérer le calcul, j'ai décidé de faire un dll en c++ (sous
borland c++ builder) chargée de faire la partie la plus bruitale du
travail, càd le camlcul itératif fait pour chaque point, je met le
code source à la fin du post.

Comme je n'avais pas visual basic, j'ai vérifié que ma dll marchait
bien en l'important dans un programme sous delphi, puisque j'avais pas
VB à disposition. Le petit programme delphi ne fait que tester
quelques valeurs mises 'en dur' dans le code, mais il m'a permis de
m'assurer que la dll marche bien.

Si ma fonction s'appelle 'calcul' dans le source, le compilateur en a
fait je ne sais trop pourquoi '_calcul' (c'est la première fois que je
compile une dll, et je connais quasi pas le c++).

Qu'a celà ne tienne, j'ai importé sous delphi la fonction et ça
marche, j'ai utilisé la ligne :

function _calcul(zzr , zzi,cr, ci, lim : double; imax : integer) :
integer; cdecl; external 'madll.dll';

Bon, maintenant, je n'ai plus c++ builder sous la main, mais
j'ai visual basic. J'essaie de faire la même chose en vb. Et là j'ai
un problème, c'est que ce crétin de compilateur vb considère le '_'
comme un caractère incorrect! Comment importer quand même ma fonction?

merci d'avance



#include <vcl.h>
#pragma hdrstop

typedef struct scomplexe {double re; double im;} complexe;

extern "C" __declspec(dllexport) int calcul(double, double, double,
double, double, int);

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{ return 1; }

double modulec(complexe z)
{ return (z.im*z.im + z.re*z.re); }

complexe carre(complexe z)
{ complexe zca = { z.re*z.re - z.im*z.im, 2*z.im*z.re };
return zca; }

complexe somme(complexe a, complexe b)
{ complexe s = {a.re + b.re, a.im + b.im};
return s; }

int calcul(double zzr, double zzi, double cr, double ci, double lim,
int imax)
{ int i=0;
complexe z={zzr,zzi}, c={cr,ci};
while ( (++i<imax)&&(modulec(z = somme(carre(z),c))<lim) );
return(i);
}




--
« Si quelqu’un a une crise de paludisme, il suffit qu’il prenne une
pioche et aille creuser la terre au soleil pour être guéri grâce à
sa conscience politique élevée. »
POL POT

10 réponses

1 2
Avatar
Fabien LE LEZ
fr.comp.os.ms-windows.programmation


--
;-)
Avatar
cyril
Profitant de la liberté d'expression qui, pour quelques semaines
encore, prévaut en France, Fabien LE LEZ a

fr.comp.os.ms-windows.programmation


merci
--
« Si quelqu’un a une crise de paludisme, il suffit qu’il prenne une
pioche et aille creuser la terre au soleil pour être guéri grâce à
sa conscience politique élevée. »
POL POT

Avatar
Pierre Maurette
cyril <meynier.cyril@(antispam)wanadoo.fr> a écrit:

Profitant de la liberté d'expression qui, pour quelques semaines
encore, prévaut en France, Fabien LE LEZ a

fr.comp.os.ms-windows.programmation


merci
« Si quelqu’un a une crise de paludisme, il suffit qu’il prenne une
pioche et aille creuser la terre au soleil pour être guéri grâce à
sa conscience politique élevée. »
POL POT
Les citations en signature sont à mon sens lourdes, prétentieuses, et

souvent (gratuitement) insultantes pour la personne à laquelle le
message répond.
Ici, à cette signature évoquant on ne sait trop pourquoi un dirigeant
communiste cambodgien particulièrement sanguinaire, vous ajoutez un
chapeau annonçant si j'ai bien compris l'imminence d'un épisode
totalitaire en France. Notez bien que ce forum est francophone, et non
français, et que la francophonie est bien représentée par exemple dans
le sud-est asiatique.
Tout ceci fait beaucoup en comparaison avec le contenu utile du
message, isn't it?
--
Pierre


Avatar
Fabien LE LEZ
On Fri, 20 Aug 2004 21:39:29 +0200, Pierre Maurette
:

Ici, à cette signature évoquant on ne sait trop pourquoi un dirigeant
communiste cambodgien particulièrement sanguinaire, vous ajoutez un
chapeau annonçant [...]


N'accable pas trop un adolescent en plein recherche de repères...


--
;-)

Avatar
Alain Naigeon
"Pierre Maurette" a écrit dans le message news:

cyril <meynier.cyril@(antispam)wanadoo.fr> a écrit:

Profitant de la liberté d'expression qui, pour quelques semaines
encore, prévaut en France, Fabien LE LEZ a

fr.comp.os.ms-windows.programmation


merci
« Si quelqu'un a une crise de paludisme, il suffit qu'il prenne une
pioche et aille creuser la terre au soleil pour être guéri grâce à
sa conscience politique élevée. »
POL POT
Les citations en signature sont à mon sens lourdes, prétentieuses, et

souvent (gratuitement) insultantes pour la personne à laquelle le
message répond.
Ici, à cette signature évoquant on ne sait trop pourquoi un dirigeant
communiste cambodgien particulièrement sanguinaire, vous ajoutez un
chapeau annonçant si j'ai bien compris l'imminence d'un épisode
totalitaire en France.



fais une recherche sur "deuxième degré" dans google ?!

Tout ceci fait beaucoup en comparaison avec le contenu utile du
message, isn't it?


doesn't it, en anglophonie bien-pensante.

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France



Avatar
Alain Naigeon
"Pierre Maurette" a écrit dans le message news:

cyril <meynier.cyril@(antispam)wanadoo.fr> a écrit:

Profitant de la liberté d'expression qui, pour quelques semaines
encore, prévaut en France, Fabien LE LEZ a

fr.comp.os.ms-windows.programmation


merci
« Si quelqu'un a une crise de paludisme, il suffit qu'il prenne une
pioche et aille creuser la terre au soleil pour être guéri grâce à
sa conscience politique élevée. »
POL POT
Les citations en signature sont à mon sens lourdes, prétentieuses, et

souvent (gratuitement) insultantes pour la personne à laquelle le
message répond.
Ici, à cette signature évoquant on ne sait trop pourquoi un dirigeant
communiste cambodgien particulièrement sanguinaire, vous ajoutez un
chapeau annonçant si j'ai bien compris l'imminence d'un épisode
totalitaire en France.



fais une recherche sur "deuxième degré" dans google ?!

Tout ceci fait beaucoup en comparaison avec le contenu utile du
message, isn't it?


doesn't it, en anglophonie bien-pensante.


PS : Fabien, la prochaine fois, choisis au moins un bon francophone
franchouillard, genre Robespierre, au lieu d'aller chercher un
estranger.
t'aurais pas des copains à Bruxelles, toi ?

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France



Avatar
Pierre Maurette
Fabien LE LEZ a écrit:

On Fri, 20 Aug 2004 21:39:29 +0200, Pierre Maurette
:

Ici, à cette signature évoquant on ne sait trop pourquoi un dirigeant
communiste cambodgien particulièrement sanguinaire, vous ajoutez un
chapeau annonçant [...]


N'accable pas trop un adolescent en plein recherche de repères...
Tu as raison. Je n'avais pas pris en compte cet aspect des choses.

--
Pierre


Avatar
Fabien LE LEZ
On Fri, 20 Aug 2004 22:09:30 +0200, "Alain Naigeon"
:

PS : Fabien, la prochaine fois, choisis au moins un bon francophone
franchouillard, genre Robespierre, au lieu d'aller chercher un
estranger.


Uh ? De quoi tu causes ?

[Désolé, les références éloignées, sous-entendus et non-dits, ça ne
marche pas avec moi : si on ne me met pas les points sur les i, je ne
comprends rien :-/ ]


--
;-)

Avatar
Pierre Maurette
cyril <meynier.cyril@(antispam)wanadoo.fr> a écrit:

Bonjour,
[...]

Bon, maintenant, je n'ai plus c++ builder sous la main, mais
j'ai visual basic. J'essaie de faire la même chose en vb. Et là j'ai
un problème, c'est que ce crétin de compilateur vb considère le '_'
comme un caractère incorrect! Comment importer quand même ma fonction?


La solution Microsoft coté VB:
Declare Function calcul Lib "" Alias "_calcul" (ByVal etc...) As ...

Dans votre code C++Builder, vous (ou le Wizard) incluez la VCL, celà
semble inutile. A partir de cette constation, vous pourriez
télécharger C++5.5 (compilo de C++Builder 5) ou C++BuilderX (compilo
de C++Builder 6) et remettre votre DLL "à plat".
http://www.borland.com/products/downloads/download_cbuilder.html
http://www.borland.com/products/downloads/download_cbuilderx.html
--
Pierre
[C'est en sciant que Léonard devint scie]

Avatar
Pierre Maurette
"Alain Naigeon" a écrit:

"Pierre Maurette" a écrit dans le message news:
[...]

totalitaire en France.



fais une recherche sur "deuxième degré" dans google ?!
Il est certain que je manque d'humour. Dans "Le général est arrivé à

pied par la Chine", je demande "pourquoi un général?".

Tout ceci fait beaucoup en comparaison avec le contenu utile du
message, isn't it?


doesn't it, en anglophonie bien-pensante.
Ooops. J'aurais du en rester à:

...., ne fait-il pas?
--
Pierre


1 2