bibifinal
Messages postés62Date d'inscriptionmardi 8 septembre 2009StatutMembreDernière intervention 3 mars 2010
-
2 févr. 2005 à 10:24
bibifinal
Messages postés62Date d'inscriptionmardi 8 septembre 2009StatutMembreDernière intervention 3 mars 2010
-
3 févr. 2005 à 09:58
bonjour tout le monde, voila g créé ma dll, qui fonctionne (normalement) mais lorsque je l'appelle ca plante avec un type incompatible, la dll est en C++ et je l'utilise en vb.net
voila mon code, si y a des trucs vraiment affreu n'hesitez pas a le dire
pour la partie en C++ (la dll)
#include <stdafx.h>
#include <mapi.h>
#include <mapix.h>
#include <objbase.h>
#include <edk.h>
#include <Edkmdb.h>
#include <MAPIUtil.h>
#include <MAPIUTIL.H>
#include <MAPIDEFS.H>
#include <wabdefs.h>
#pragma
comment(
lib, "mapi32.lib")
extern "C" {
#endif
int
__declspec(
dllexport) SetPropri(SPropValue *XoSprop,MapiMessage XoMess);
#ifdef __cplusplus
}
#endif
int
__declspec(
dllexport) SetPropri(SPropValue *XoSprop,MapiMessage XoMess){
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 3 févr. 2005 à 09:47
Et en vérifiant avec Depends.exe le nom est le bon ?
Alors là je vois pas. Et comme je l'ai dis la compatibilité VB.NET et c++ je n'y connais rien du tout.
Faudrait peut-être poster un nouveau message sur le forum (C/C++ et aussi VB je pense) au sujet du passage de param entre un prog VB.net et une dll c++.
Enfin si la fonction de mapi de peut être utilisée qu'ne delphi ou c) il sera peutêtre pas possible de l'appeler à partir de VB.net (même via une dll c++)...
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 2 févr. 2005 à 11:17
seule la section EXPORTS avec le nom des fonctions est utile (@16 sert à rien).
Sinon, dans le répertoire de visual il ya un prog nomé depends qui permet de vérifier si la fonction est bien exportée de la dll et de voir le nom sous lequel elle est exportée. Pour cel il suffit d'exécuter depends.exe et d'ouvrir ta dll avec.
bibifinal
Messages postés62Date d'inscriptionmardi 8 septembre 2009StatutMembreDernière intervention 3 mars 2010 2 févr. 2005 à 11:22
[mailto:?SetPropri@@YAHPAU_SPropValue@@PAUIMAPIProp@@@Z ?SetPropri@@YAHPAU_SPropValue@@PAUIMAPIProp@@@Z]
que ca me met dans la fonction que je veu exporter
Naruto
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 2 févr. 2005 à 11:23
Ouais, en fait c'est pas trop grave car c'est une dll qui n'est pas chargée au lancement mais plus tard (delay-load) si des conditions sont requises. La zone importante est celle en bas à droite lorque tu sélectionne le nom de ta dll dans le panneau de gauche.
bibifinal
Messages postés62Date d'inscriptionmardi 8 septembre 2009StatutMembreDernière intervention 3 mars 2010 2 févr. 2005 à 11:28
l'entry-point donc, je suppose, qui est 0*0001151E
(grande question, je me demande si tu a visual studio, je pourrais t'envoyer ma source pour voir si y a quelque chose qui va pas du tout (enfin si tu voi ce que je veu faire avec ma dll))
parce que je ne sais meme pas si c mon prog en vb qui plante ou la dll (eu g un EXTERN "C" qui veu dire que c que pour du C ou pas (normalement non vu que g deja réussit a renvoyer une valeur de la dll))
Naruto
Cependant, pourquoi ne pas utiliser directement HrSetOneProp à partir de VB. Il faut simplement savoir que cette fonction est dans mapi32.dll sous le nom HrSetOneProp@8
pour la récupérer en VB ça doit être un truc du genre :
Declare Function HrSetOneProp Lib "mapi32" Alias "HrSetOneProp@8
" (...) As Long
les (...) correspondent aux param à la sauce VB que je ne connais pas.
bibifinal
Messages postés62Date d'inscriptionmardi 8 septembre 2009StatutMembreDernière intervention 3 mars 2010 3 févr. 2005 à 09:12
dison que au niveau de vb6 ca ne marchais pas du tout d'appeller directement l'api HrSetOneProp de mapi32, ca plantais des que je pensais avoir les bons parametres, donc c plutot au niveau de la déclaration que j'arrivais jamais, du coup g opté pour le c++, et la il me dit une déclaration (du coup je peu peu etre passer ces declarations en .net, mais toutes les infos que g cherché la dessus m'ont dis que cette fonction n'était utilisable que en Delphi et en c++ lol (a ton avis quel serait sa declaration en vb .net)
bibifinal
Messages postés62Date d'inscriptionmardi 8 septembre 2009StatutMembreDernière intervention 3 mars 2010 3 févr. 2005 à 09:24
oui, maintenant ca me met au moin un nom correct lol, et au niveau des parametres ca bug tjs autant, mais merci bien deja, a mon avis c au niveau de la compabilité entre c++ et vb que ca va po...
Naruto