J'ai un problème avec P/Invoke. En fait je n'arrive pas du tout a l'utiliser. Je voudrait utiliser, pour commencer, avec ma propre Dll.
Mais je n'ai pu trouver que des exemples qu'avec des Dll système de Windows. (Comme user32.dll). J'ai essayé de mettre ma Dll un peu partout, répertoire : de debug, de release, system32... (Ça ne fait pas pro, hein ? Je tâtonne, désolé ) Rien n'y fait.
C'est une fonction toute simple pour essayer. Juste une factorisation en C++. Rien de bien sorcier, pas de dépendances, rien.. Voila le code de Facto.dll, en c++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
int facto(int x){
   if(x>1){ return facto(x-1)*x;}
   else{ return 1;};
};
Voila le code en C# de mon projet (AppelDllImport), j'ai volontairement fait au plus simple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
public class ClassFacto
{
   public ClassFacto(){}
   [DllImport("Facto.dll", EntryPoint="facto")]
   public static extern int facto(int x);
}
 
class TestDllImport
{
   static void Main(string[] args)
   { Console.WriteLine(ClassFacto.facto(10).ToString());}
}
Voila l'erreur lors de la compilation (Je n'en ai pas lors de l'assemblage)
Une exception non gérée du type 'System.EntryPointNotFoundException' s'est produite dans AppelDllImport.exe
Informations supplémentaires : Impossible de trouver le point d'entrée facto dans la DLL Facto.dll.
Ce message est en rapport avec un post précédent de slyer. (lien vers le post) Bien que mon problème et celui de slyer soit apparemment très proche, la cause est peut-être différente. J'ai préféré faire un nouveau post, c'eut été un peu malvenu d'exposer mon propre problème, alors qu'il attend lui aussi des réponses.
Si quelqu'un a une piste....