2010-03-03 3 views
1

Dans mon code C#, j'ai besoin d'appeler une fonction d'une DLL C++ que j'ai écrite. La fonction est générique. Alors, devrais-je simplement l'importer comme ceci:Comment importer un modèle de fonction à l'aide de PInvoke?

[DllImport("myDll.dll")] 
private static extern TypeName functionName<TypeName>(int arg1, int arg2); 

Est-ce une syntaxe correcte? Merci.

Répondre

4

Cela ne peut pas fonctionner, il n'existe pas de compilateur C++ principal-flux qui rend les modèles exportables. De plus, les gabarits sont instanciés par le compilateur C++ par effacement de type, similaire au fonctionnement des génériques Java. En d'autres termes, les fonctions appelables concrètes doivent être incorporées dans la DLL par le compilateur C++. Ils ne sont plus génériques. En alternative, vous pouvez écrire une classe ref dans le langage C++/CLI. Cela produit une véritable classe générique .NET, utilisable par tout langage .NET prenant en charge les génériques.