dodo7263
Messages postés616Date d'inscriptionmercredi 10 septembre 2008StatutMembreDernière intervention 9 février 2017
-
7 janv. 2014 à 21:07
dodo7263
Messages postés616Date d'inscriptionmercredi 10 septembre 2008StatutMembreDernière intervention 9 février 2017
-
20 janv. 2014 à 11:59
Bonjour à tous,
Je vous ai abandonné depuis un petit moment mais me voilà de retour ;-)
Ma question est simple mais en apparence je pense.
D'un côté j'ai une plateforme avec à ma disposition un framework développé en .NET
D'un autre côté j'ai une seconde plateforme avec un framework développé en C++.
Je suis en train de développer une application (en C#) que je peux intégrer sur la première plateforme mais qui doit également être compatible sur la seconde plateforme (en C++).
Je pensais rajouter une surcouche (style "wrapper") sur mon application C# pour répondre à cette problématique.
D'ailleurs le chemin inverse peut être possible : à savoir développer mon appli sur la plateforme en C++ et qu'elle soit compatible sur la plateforme C#
Pensez vous que cela soit possible de rendre cette application compatible avec les 2 plateformes ?
En espérant avoir été clair sur la description de mon "problème".
PapyNormand
Messages postés27Date d'inscriptionsamedi 7 août 2010StatutMembreDernière intervention16 janvier 20141 15 janv. 2014 à 21:05
Bonjour ,
Désolé pour cette réponse tardive , mais je n'ai regardé qu'aujourd'hui les forums de Codes-Sources.
Il existe plusieurs possibilités pour recréer un code-source en un langage différent de la version originale. Petit problème , il nécessite d'utiliser l'assemblée
System.Codedom :
http://msdn.microsoft.com/en-US/library/system.codedom.aspx et System.CodeDom.Compiler :
http://msdn.microsoft.com/en-US/library/system.codedom.compiler.aspx qui correspondent au .Net Framework 4.5/4.5.1
Je donne le lien vers la version américaine car elle est la seule officielle . Pour la version française, remplacer en-US par fr-FR. Et vous aurez un petit message du style "Cet article a fait l'objet d'une traduction automatique"...
Ces 2 assemblées ne sont pas simples à utiliser sauf peut-être dans un cas : il est possible à partir de l'assemblée de votre application de générer le graphique de code source compatible. A partir de ce graphique , on peut regénérer un code source dans un langage différent du langage utilisé pour créer l'assemblée , mais , même si le code nécessaire pour créer le graphique et pour regénérer le code dans un nouveau langage n'est pas très gros en nombre de lignes, les 2 opérations sont longues en temps d'éxecution et se plantent parfois si le graphique est compliqué. De plus , le code généré peut-être imparfait en termes de présentation et lisibilité ( je l'ai fait pour de petits espaces de nom correspondant à des codes de 3000 lignes pour passer de VC# en VB et c'a été assez pénible ).
Par contre , cette méthode risque de ne pas marcher si vous utilisez des types ou instructions non "managés" ( non traitables par .Net Framework ).
Ce qui pourrait être intéressant est de connaître l'année de sortie pour VC# et C++ car le .Net Framework change et les langages aussi ( pratiquement à chaque nouvelle version de Visual Studio ).
dodo7263
Messages postés616Date d'inscriptionmercredi 10 septembre 2008StatutMembreDernière intervention 9 février 20176 20 janv. 2014 à 11:59
Bonjour,
Désolé à mon tour de la réponse tardive. Merci pour les liens. J'ai lu tout ça mais je ne pense pas que cela réponde à mes attentes.
Finalement, en faisant mon étude, j'ai décidé de développer un socle commun pour les 2 plateformes en C++ natif. En fait une librairie (.dll).
Je vais par la suite développer un wrapper (C++/CLI) pour cette dll qui me permettra de consommer mon code natif dans mon appli C# en toute transparence pour l'utilisateur final.
Du coup une autre question se pose. Etant donné que je vais être confronté au problème code non managé/ code managé, vais-je obligatoirement avoir recours au marshalling afin de convertir les types non managé en type .NET.
20 janv. 2014 à 11:59
Désolé à mon tour de la réponse tardive. Merci pour les liens. J'ai lu tout ça mais je ne pense pas que cela réponde à mes attentes.
Finalement, en faisant mon étude, j'ai décidé de développer un socle commun pour les 2 plateformes en C++ natif. En fait une librairie (.dll).
Je vais par la suite développer un wrapper (C++/CLI) pour cette dll qui me permettra de consommer mon code natif dans mon appli C# en toute transparence pour l'utilisateur final.
Du coup une autre question se pose. Etant donné que je vais être confronté au problème code non managé/ code managé, vais-je obligatoirement avoir recours au marshalling afin de convertir les types non managé en type .NET.