Bonjour,
Au cours du stage que je suis en train de faire, je vais devoir créer un programme en C# qui fait appel à des méthodes d'un code en C++. L'idée qui est venu était d'encapsuler ce code dans une DLL. Comme je ne sais pas comment faire, j'ai commencé par un petit exemple très simple pour maîtriser cette technique.
J'ai écrit le code suivant en C++:
Header:
et le corps
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #pragma once using namespace System; namespace somme1 { public class Somme { public: int sum(int a, int b); }; }
J'ai compilé et j'ai formé la DLL. Ensuite en C#, j'essaie de l'utiliser comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #include "somme1.h" int somme1::Somme::sum(int a, int b) { return a+b; }
J'obtien l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; using somme1; namespace test_somme { class Program { [DllImport("somme1.dll", EntryPoint = "sum")] static extern int sum([MarshalAs(UnmanagedType.I4)] int a,[MarshalAs(UnmanagedType.I4)] int b); static void Main(string[] args) { int a, b,c; string ligne; Console.WriteLine("entrer le premier entier: "); ligne = Console.ReadLine(); a = int.Parse(ligne); Console.WriteLine("entrer le deuxieme entier: "); ligne = Console.ReadLine(); b = int.Parse(ligne); //Appel de la méthode de la librairie Console.WriteLine("le resultat est: "); c = sum(a, b); Console.WriteLine(c); } } }
J'ai essayé beaucoup de combinaisons comme somme1.Somme.sum, etc. Mais toujours ce même genre d'erreur. Quelqu'un peut il m'aider svp à réaliser cette importation de DLL?Unable to find an entry point named 'sum' in DLL 'somme1.dll'.
Merci.
Partager