2009-11-13 5 views
3

J'ai une bibliothèque numérique codée en C++.C# pour UI, C++ pour la bibliothèque

Je vais créer une interface utilisateur pour la bibliothèque. Je connais un MFC. Une solution consiste donc à utiliser MFC et à créer une application native.

L'alternative est C#. Je ne sais rien sur C#. Mais je pense que ça devrait être facile à apprendre.

Un tutoriel pour la programmation mixte de C++ et C# serait très utile pour moi.

Merci!

Yin

Répondre

8

Je recommande d'utiliser Windows Forms ou WPF via C# pour votre interface graphique. Prenez votre bibliothèque numérique et utilisez C++/CLI pour créer un wrapper .NET pour elle.

Cela rend trivial à utiliser à partir de C# (il ressemble à toute autre bibliothèque C#).

Je recommande fortement Nishant Sivakumar's C++/CLI articles sur CodeProject pour en savoir plus sur C++/CLI et comment envelopper les bibliothèques C++. Ils sont plutôt bien écrits. MSDN est une bonne référence pour l'utilisation Windows Forms from C#

3

Écrivez votre interface graphique en C# en utilisant WinForms or WPF, et appelez votre code natif par Platform Invoke. Au lieu de P/Invoke, vous pouvez envisager C++/CLI pour créer un wrapper .NET pour votre bibliothèque native.

À mon humble avis en utilisant C# est beaucoup plus facile que MFC, de sorte que vous êtes sur la bonne voie.

+1

P/Invoke est difficile si c'est une vraie bibliothèque C++. Vous devez presque avoir une API C pour que votre bibliothèque puisse l'utiliser. C++/CLI est beaucoup plus expressif. –

+0

Dépend de l'interface de sa bibliothèque C++, certainement. Si c'est simple et court, P/Invoke fera l'affaire. –

1

Vous pouvez utiliser C# très facilement pour créer l'interface utilisateur. Vous aurez besoin d'écrire une classe wrapper simple pour appeler votre DLL non managée, mais c'est simple. consultez le msdn page sur ce sujet

0

Allez avec C#. MFC est un peu daté, donc si vous avez besoin d'apprendre quelque chose - optez pour une technologie plus récente, ne perdez pas votre temps avec MFC. J'irais pour WPF, la courbe d'apprentissage est plutôt raide, mais c'est amusant.

0

Je suggère de regarder dans SWIG. Vous pouvez écrire la partie principale de votre code en C++ en tant que dll, puis avoir un lien C# UI contre lui.

0

Si vous avez la source dans votre bibliothèque numérique C++, vous pouvez la modifier pour la compiler en C++/CLI, vous pouvez alors vous lier comme n'importe quelle autre bibliothèque .NET. Il ne devrait pas exiger une grande quantité de travail pour modifier la source aveC#defines pour la compilation conditionnelle C++/CLI.