Bonjour à tous,
Je viens vers vous car j'ai cherché toute la journée la solution à mon problème mais je n'y arrive toujours pas.
Comme l'intitulé l'indique je cherche à utiliser une méthode d'une dll c++ dans un programme C#.
La difficulté c'est que c'est une méthode d'un objet quelconque, et je ne sais pas comment l'implémenter du côté programme C#.
Exemple:
Nom de ma dll : maDLL.dll
Fichier monObjet.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 bool MonObjet::test() { bool mytest = true; return mytest; }
J'ai essayé ceci côté programme c#:
Dans DLL export viewer l'ordinal #1234 correspond à la fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 [DllImport("maDLL.dll", EntryPoint = "#1234", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.ThisCall)] public static extern bool test(); static void Main(string[] args) { Console.WriteLine("le booleen est: " + test()); }
public: bool __cdecl pla::MonObjet::test(void) __ptr64
Mais cela ne marche pas, un message d'erreur s'affiche dans la console C#:
<<Unhandled Exception: System.Runtime.InteropServices.MarshalDirectiveException: I
nvalid PInvoke calling convention. Thiscall requires that the first parameter is
present and can be enregistered.>>
Merci pour votre aide svp.
Partager