Recherche de tutoriels ou d’informations de base pour commencer à implémenter l’API C / C ++ en c # pour les débutants

Je suis à un stade assez précoce d’apprentissage de c # / .NET en utilisant MonoDevelop pour effectuer mon travail. J’ai rencontré des API développées en c ou parfois en c ++. Je cherchais des informations pour commencer à mettre en œuvre des API écrites en c ou c ++ afin de pouvoir les utiliser pour mes projets c #. Je n’ai pas de code spécifique à vous montrer pour l’instant, ce dont j’ai besoin, c’est d’être dirigé dans la bonne direction.

Voici un échantillon de lieux que j’ai parcourus:

Je songe à implémenter une API c / C ++ en C #. J’ai fait des recherches, mais j’ai du mal à démarrer.

http://www.codeproject.com/Articles/1285/Calling-API-functions-using-C (un article quelque peu daté, semble faisable, mais ne semble pas aller très loin.)

http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=219 (quelques informations de base, mais peu de détails sur ce qui se passe.)

trouvé des choses sur SO: api C à C # GUI (cela a l’air bien foutu)

https://stackoverflow.com/questions/9747607/c-apivs-2005-integrate-into-c-sharp-vs-2010project (aucune réponse fournie)

parler à C de C # (ça a l’air bien, quelques trucs à propos de Pinvoke)

Quoi qu’il en soit, je suis un peu dépassée et je pourrais utiliser certaines indications pour me lancer. C’est peut-être trop pour un noob d’octroyer [sic]?

Toute aide est très appréciée. À VOTRE SANTÉ

Essayez SWIG – c’est un outil permettant de créer des wrappers autour du code C et C ++ pour de nombreux langages.

Je l’ai utilisé plusieurs fois avec de bons résultats. En gros, il vous suffit de définir les fichiers / bibliothèques de code C et C ++ que vous souhaitez encapsuler et SWIG génère les classes C # correspondantes (et du code standard) que vous pouvez simplement append à votre projet C # (et bien sûr, vous devez comstackr la partie C / C ++ aussi et en faire une DLL).

Par exemple. vous pourriez avoir une petite bibliothèque C ++ qui avait des classes

class Foo { public: int myMethod(Bar& bar); } class Bar { ... } 

Après le SWIGing, votre code C # ressemblerait à quelque chose comme:

 Bar bar = new Bar(); Foo foo = new Foo(); int result = foo(bar);