begin process at 2010 02 10 07:38:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

utiliser en vb++ une dll faite en c++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

utiliser en vb++ une dll faite en c++

samedi 21 février 2004 à 21:32:10 | utiliser en vb++ une dll faite en c++

jon26

Bonjour, je me casse la tête à tenter d'appeler une fonction de ma dll vc++ 6.0 en vb6.0.

Voici le code de ma fonction exemple dans la dll

extern "C" __declspec(dllexport) int essai4A(int *a, int *b)
{
int c=0;
int d=0;
a=&c;
b=&d;

for(int i=1;i<=49;i++)
{
for(int j=1;j<=50;j++)
{
for(int k=1;k<=51;k++)
{
for(int l=1;l<=52;l++)
{
for(int m=1;m<=52;m++)
{
c++;
}
}
}
}
}
return c;
}


Dans vb

je déclare


Public Declare Function essai4 Lib "ehsdll6.dll" Alias "essai4A" (ByVal a As Long, ByVal b As Long) As Long

et j'appelle

vc = essai4(a, b)

Lorsqu'il n'y à pas de paramètres ça marche, mais lorsque j'en mets, il me dit bad dll call convention. En c++ j'ai tenté

int essai4A(int *a, int *b)
int essai4A(int a, int b)

La déclaration des paramètres dans vb est-elle bonne?

Merci à celui qui résoudra cet affreux problème!!!
samedi 21 février 2004 à 21:46:18 | Re : utiliser en vb++ une dll faite en c++

BruNews

Administrateur CodeS-SourceS
Tes fonctions doivent etre exportees au standard: __stdcall

Fichier def:
LIBRARY bnMaths
EXPORTS
bnCompare @1
bnAdd @2
bnSub @3
bnMul @4
bnDiv @5

dans le cpp:
long __stdcall bnCompare(BSTR *bst1, BSTR *bst2)
{
...
}
ici je prends 2 String VB en param

etc...


ciao...
BruNews, Admin CS, MVP Visual C++
dimanche 22 février 2004 à 01:48:33 | Re : utiliser en vb++ une dll faite en c++

jon26

Merci beaucoup pour ta réponse, mais j'ai essayé et il me dit qu'il ne trouve pas le point d'entrée de la fonction dans le dll.

int __stdcall essai4A(int *a, int *b)

Ces fixhiers def, je les introduits comment dans mon projet?
Il faut créer quoi comme type de workspace pour faire ce genre de dll à utiliser dans vb, ou bien que faut-il changer dans les settings du projet?
dimanche 22 février 2004 à 02:01:36 | Re : utiliser en vb++ une dll faite en c++

BruNews

Administrateur CodeS-SourceS
New project
win32 DLL et VIDE !!! no headers precomp ou autres bidules.
Mets de suite en release.
Creer un cpp du meme nom que proj.
Aussi un fichier DEF meme nom que proj.

Tu mets ton DllMain dans cpp et le reste comme vu plus haut.

ciao...
BruNews, Admin CS, MVP Visual C++
dimanche 22 février 2004 à 03:13:56 | Re : utiliser en vb++ une dll faite en c++

jon26

j'ai fait exactement comme tu as dit. Malgré tout, vb me dit que les conventions ne sont pas bonnes.
Tout ce que je veux, c'est passer deux entiers en paramètres. Je dois faire un pointeur (int *a), ou simplement le passage de l'entier (int a). De tte façon dans les deux cas, il refuse d'accepter ça comme un (a as long) en vb.

C'est fou que ce soit si dur de passer des parmètres, des simples entiers.

Merci en tout cas pour ton aide...

dimanche 22 février 2004 à 12:08:07 | Re : utiliser en vb++ une dll faite en c++

BruNews

Administrateur CodeS-SourceS
Mais non ce n'est pas dur, je vois si j'ai un moment dans la journee et je fais une source de cela.
ciao...
BruNews, Admin CS, MVP Visual C++
dimanche 22 février 2004 à 16:04:16 | Re : utiliser en vb++ une dll faite en c++

BruNews

Administrateur CodeS-SourceS
http://www.cppfrance.com/code.aspx?ID=20672
c'est fait.

ciao...
BruNews, Admin CS, MVP Visual C++
mardi 24 février 2004 à 00:16:57 | Re : utiliser en vb++ une dll faite en c++

jon26

Salut Brunews,

Merci pour ton aide et ce projet que tu as fait. Le fichier sln crée une erreur et m'ouvre Microsoft Visual Developper. J'aurais aimé avoir le tout dans Microsoft VC++, mais c'est déjà très chouette. J'ai pu voir chacun de tes fichiers séparément, et j'ai essayé de reporter ce que tu as fait sur mon code, et même de compiler ta dll et appeler tes fonctions depuis mon code vb.

Les mêmes erreurs se produisent. Alors, ce que j'ai fait, c'est mettre dans un .zip un projet complet vc++ avec ma fonction exportée selon deux méthode (export, et stdcall) et le code vb qui l'appelle.

Lorsque j'appelle la fonctione xportée avec "extern "C" __declspec(dllexport)", l'erreur dans vb est "Bad dll calling convention"

Lorsque j'appelle la fonctione exportée avec "__stdcall", l'erreur dans vb est "Can't find dll entry point"


Peux-tu jeter un oeil à mon zip qui est très simple. je dois oublier un bête truc qui me prend déjà une semaine. C'est pas logique tout ça. Avec ton expérience, tu verras le probkème directement. Voici mon .zip :

http://www.cppfrance.com/code.aspx?ID=20711

Merci infiniment

Jonathan
mardi 24 février 2004 à 00:44:56 | Re : utiliser en vb++ une dll faite en c++

BruNews

Administrateur CodeS-SourceS
J'ai pris ton zip et enleve ta source.

C'est quoi tout ce bordel d'include qu'il y a en haut du cpp ???
Je reprends ce qu j'avais mis plus haut:

New project
win32 DLL et VIDE !!! no headers precomp ou autres bidules.
ME SEMBLE POURTANT TRES CLAIR, non ? Et pourtant 1ere chose que je trouve, stdafx... c'est pas venu tout seul.
VIDE, VIDE !!!
Y a pourtant des options quand tu fais un new proj, faut pas tout ce qu'il y a par defaut.

Ou est le fichier DEF pour export des fonctions SANS decoration des noms de fonction ???

Creer un cpp du meme nom que proj.
Aussi un fichier DEF meme nom que proj.
2 lignes qui etaient SANS ambiguite.

Recommence en faisant EXACT ce que j'ai dit.
CPP ne doit avoir que <windows.h> en include !!!

long __stdcall essai4B(long a, long b)
Celle ci est la bonne, manque seulement que son nom soit en export dans un DEF.


Une derniere: ne pas se servir des sources comme d'un FTP, ouvre t'en un sur FREE ou autre, c'est gratos.

ciao...
BruNews, Admin CS, MVP Visual C++
mercredi 25 février 2004 à 18:15:46 | Re : utiliser en vb++ une dll faite en c++

jon26

Salut, tout d'abord merci beaucoup pour le temps que tu as passé à m'expliquer tout ça. Je viens de comprendre mon imbécilité. J'ai bêtement copié ton fichier def sans réfléchir, ce sont des noms de fonction. Nom d'une pipe, mais alors, ça va marcher!!! Je dois mettre le nom de mes fonctions et pas des tiennes... Faut dire qu'on voyait pas tout de suite que c'étaient des noms de fonctions ;) Bon j'essaye de remettre un peu de faute sur toi, mais elle ne vient que de moi la faute.
A propos du projet pas vide, je sais bien, j'avais fait à la lettre ce que tu m'avais dit, mais ça ne marchait pas, alors j'ai fait un nouveau projet avec du défaut pour réessayer, et désespéré je t'ai envoyé celui-là, dans la tourmente.

Tu es génial, tes infos étaient suffisantes, et moi pas assez attentif ;) Merci beaucoup

P.S. pour les sources, bien compris, je ne le ferai plus

1 2 3

Cette discussion est classée dans : vb, int, dll, for, essai4a


Répondre à ce message

Sujets en rapport avec ce message

DLL faite en C++ avec VB [ par Sniper_Vgaerr ] Je fais un programme de cryptage avec clé privée et publique et je prefere l'interface de VB que celle du C, mais comme le C va plus vite je prefere c passage de parametres entre un prog VB.net et une dll c++. [ par bibifinal ] voila, j'utilise un prog en vb .net, et j'aimerais utiliser la dll que j'ai fait en c++, ma declaration de la dll (dans mon prog en c++):extern "C" in pb en c urgenttttttttttttttttt [ par natacha86 ] bonjour, j'ai un probleme avec mon programme, il ne veut pas sortir, j'ai fais un menu et apparement ya un bug mais je ne comprend rien.le code est as Appeler une fonction VB à partir de C++ [ par doggyk ] Bonjour à tous!Voilà, je souhaiterais appeler une fonction VB à partir d'une DLL C++ (appelée auparavant par mon prog VB).En gros:Démarrage du prog Y passage de matrice en vb a une dll c++ [ par brosspro ] Bonjour,je cherche à passer une matrice sous Excel à une dll.J arrive a faire passer des arguments simples mais pas les matrices.Es t il possible d ap Intégration d'une DLL ecrite en VB dans une prog CPP ? [ par jaju39 ] Salut,J'ai développé un programme en VB6, puis créer une DLL.Je voulais savoir si je pouvais utiliser cette DLL dans un programme visual C++?Si oui, c DLL de VC++ à VB.net [ par toxjamescook ] bonjour j'ai besoin d'un petit renseignement:Voila je souhaites recupérer des infos numériques de deux bus can puis les visualiser par une interface.j linker une dll sous dev-c++ [ par the diouk ] petite question toute bête mais qui me gêne :j'utilise une DLL, dans ma source il y a bien :#define TRUCDLL "TRUC.dll";le prototype de la fonction :in tableaux dans prototype erreur [ par darmoor ] Bonjour tout le monde! bon, j'ai un petit probleme de compilation au niveau d'un tableau 2D dans un prototype. J'ai demandé à quelqu'un qui s'y conna Vitesse d'éxecution des dll en VB [ par violent_ken ] Violent Ken J'ai lu quelque part que les *.dll (faites en VB) sont plus rapides que un *.exe. (en VB)Est-ce que c'est vrai ?


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,328 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales