Utiliser une méthode d'une dll c++ dans un programme C#
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:
1 2 3 4 5
| bool MonObjet::test()
{
bool mytest = true;
return mytest;
} |
J'ai essayé ceci côté programme c#:
Code:
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());
} |
Dans DLL export viewer l'ordinal #1234 correspond à la fonction:
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.