C# Language Fonction d'importation à partir d'une DLL C ++ non gérée


Exemple

Voici un exemple d'importation d'une fonction définie dans une DLL C ++ non gérée. Dans le code source C ++ pour "myDLL.dll", la fonction add est définie:

extern "C" __declspec(dllexport) int __stdcall add(int a, int b)
{
    return a + b;
}

Ensuite, il peut être inclus dans un programme C # comme suit:

class Program
{
    // This line will import the C++ method.
    // The name specified in the DllImport attribute must be the DLL name.
    // The names of parameters are unimportant, but the types must be correct.
    [DllImport("myDLL.dll")]
    private static extern int add(int left, int right);

    static void Main(string[] args)
    {
        //The extern method can be called just as any other C# method.
        Console.WriteLine(add(1, 2));
    }
}

Reportez-vous à la section Conventions d'appel et nom C ++ pour savoir pourquoi extern "C" et __stdcall sont nécessaires.

Trouver la bibliothèque dynamique

Lorsque la méthode extern est invoquée pour la première fois, le programme C # recherche et charge la DLL appropriée. Pour plus d'informations sur l'emplacement de recherche de la DLL et sur la manière dont vous pouvez influencer les emplacements de recherche, consultez cette question sur le stackoverflow .