dereck84
Messages postés5Date d'inscriptionjeudi 14 septembre 2006StatutMembreDernière intervention12 avril 2007
-
12 mars 2007 à 16:57
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
12 avril 2007 à 18:36
Salut tout le monde,
Voile, je cherche a lancer une DLL ecrite en C# dans un programme ecrit en delphi 6.
Je nage completement ...
Si quelqu'un a deja fais ca est-ce quil pourrais partager son savoir ca m'aiderai bocu!!!
Merci d'avance.
P.S: desole si ce poste a deja etais pose mais je n'est rien trouver de concret.
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 15 mars 2007 à 17:32
Bonjour,
Quelle convention d'appel ? Mais j'y pense, la dll en C# n'est pas
sensé contenir du code machine, mais du MSIL, donc les convention
d'appel... La dll est compilé avant d'être mappé ? Ce serait pas le
genre de la maison...
Tu as déjà essayé f0xi ?
Si on prend le cas des dlls COM, c'est déjà loin d'être simple, alors avec une dll .NET...
Un portage vers du Delphi.NET n'est pas envisageable ?
dereck84
Messages postés5Date d'inscriptionjeudi 14 septembre 2006StatutMembreDernière intervention12 avril 2007 19 mars 2007 à 11:27
Non le portage doit etre fait sous Delphi 6
Mais j'ai trouvé une solution
Il faut creer une dlls com sous c#, avec une fonction d'interface que l'on appel dans delphi de cette maniere
intfRef := CreateComObject(CLASS_SimpleDLL_) as IAddInterface;
attention les possibilités d'échanges sont tres limités, cad que les types utilisés dans le parametrage ne correspondent pas forcement. je ne parle meme pas des pointeurs...
ghazghkull38
Messages postés2Date d'inscriptionmercredi 11 avril 2007StatutMembreDernière intervention12 avril 2007 11 avril 2007 à 18:02
Je profite de ce sujet pour vous poser une question qui si vous avez la solution me sortirais de la pannade.
J'ai une dll que l'on va appeler FaitLeCafe.dll qui m'a été fournie avec un exemple d'appel en C# :
...
using FaitLeCafe;
...
FaitLeCafe.FaitLeCafe mydll = new FaitLeCafe.FaitLeCafe();
mydll.FaitLeCafeEtApporte("A machin");
string resulta = mydll.ReadData.ToString();
Si je decode correctement :
Y a un namspace FaitLeCafe qui contiens un objet FaitLeCafe
ils declarent donc mydll comme etant un objet de type FaitLeCafe
puis invoquent son constructeur.
Par la suite est apellé la fonction FaitLeCafeEtApporte
L'objet mydll a une propriété contenant le résultat de FaitLeCafeEtApporte
De mon coté j'ai un serveur ecrit en delphi5 qui devrais utiliser cette dll.
Habituellement toutes les dll que j'ai utilisé ont des fonctions que j'importe et basta cosi...
La créer un objet a partir de la dll et utiliser ses méthodes je pèche....
Merci de vos réponses :-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
ghazghkull38
Messages postés2Date d'inscriptionmercredi 11 avril 2007StatutMembreDernière intervention12 avril 2007 12 avril 2007 à 11:25
En effet je souhaite utiliser cette DLL dans mon serveur qui est ecrit en delphi5
L'exemple qui m'a été donné pour intégrer cette DLL est ecrit en C# ainsi que la DLL.
Pour utiliser des fonctions dans une DLL je ne connais que cette méthode (en delphi):
// declaration
type nomTypeObjet = object end;
function FaitLeCafeEtApporte(Data : string):nomTypeObjet ; external 'FaitLeCafe.dll';
// utilisation
var
resultat : nomTypeObjet;
begin
resultat := FaitLeCafeEtApporte('A machin');
end;
La resultat est vide. Et pour cause on dirais que la DLL attends que j'appelle un constructeur d'objet puis que j'utilise une de ses méthodes et que par la suite je lise un de ses attributs pour obtenir le résultat.
Comment faire pour que je puisse appeler le constructeur de cet objet a partir de Delphi et que je puisse par la suite utiliser une de ses méthodes et que j'en lise un de ses attributs ?