2009-09-11 6 views
3

Notre société migre toute sa gamme de produits d'une base de code C++ vers le .NET Framework. Nous avons une très grande base de code, et cette migration se fait progressivement au cours de nombreuses années. Nous aimerions profiter des avantages du code managé pur, tel que Silverlight, mais il existe de nombreux modules C++/x86 hérités qui prendront du temps à être portés vers .NET.Émulateur x86 léger pour .NET/Exécution du code x86 dans un environnement géré

Une solution serait pour nous de charger ces modules dans un émulateur x86 léger s'exécutant dans un petit bac à sable de mémoire dans le .NET Framework. Cela nous permettrait d'appeler du code DLL x86 existant tout en conservant une pure application managée.

Quelqu'un connaît-il un tel projet?

Sincèrement,

Dan

Répondre

2

Je ne sais pas d'un projet qui permettrait. Cela dit, je ne pense pas que ce soit une attente réaliste dans tous les cas. L'utilisation de code natif ne consiste pas seulement à pouvoir exécuter des instructions x86.

Le plus gros problème concernera l'utilisation du code de bibliothèque. Cela ne va pas être portable dans un émulateur, car l'émulateur aurait probablement non seulement besoin d'implémenter des instructions x86, mais aussi de simuler l'API Windows, etc.

Si le code natif est juste un code numérique pur, le porter est probablement plus facile que de le tester sous un émulateur. Si c'est un code complexe utilisant des librairies, je ne vois pas cela fonctionner pratiquement, même si un tel émulateur existait.

Je voudrais juste me concentrer sur les fonctionnalités dont vous avez besoin pour être vraiment géré, et essayer de le faire migrer. C++/CLI rend cela plus simple (à condition que votre code natif soit en C++), puisque vous pouvez toujours essayer de compiler un fichier à la fois avec /clr:pure activé, et juste corriger les erreurs si nécessaire.

Pour les choses qui ne nécessitent pas 100% de gestion, l'interopérabilité en C++/CLI est un bon tremplin jusqu'à ce que vous puissiez porter votre base de code.

1

Changez pour Java au lieu de .net. Ensuite, vous pouvez utiliser ceci:

http://jpc.sourceforge.net

pour exécuter le code existant

ou compilent Java B code de C++ en utilisant LLJVM ou quelque chose de similaire.

Questions connexes