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:
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);
	};
}
et le corps
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'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
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'obtien l'erreur suivante:
Unable to find an entry point named 'sum' in DLL 'somme1.dll'.
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?

Merci.