7
votes

Quelles sont les étapes générales pour moi de porter mon projet à Mono?

J'ai une dll. et source Visual C ++ pour cela. (Ma DLL est une filière Visual C ++ autour de certains FFMPEG AV * Libs - une autre dll précompilée) tandis que dans la même solution (.sln), j'ai un projet C # qui utilise ma DLL.

Quelles sont les étapes générales pour moi de porter mon projet à Mono?


1 commentaires

Est-ce une DLL C ++ / CLI ou géré C ++?


3 Réponses :


3
votes

Compilez votre projet dans Visual Studio, mais activez les options de compilateur suivantes:

  • / CLR: Pure: Ceci fera un assemblage de CLR pur (sans aucune ASM x86 / x86-64), qui devrait exécuter sur mono, sauf si vous n'utilisez certains appels d'exécution C (CRT).
  • / CLR: Coffre-fort: La même chose que pure, mais vous ne pouvez pas avoir de références CRT, votre projet pourrait donc ne pas compiler. Si ce n'est pas le cas, remplacez ces appels de fonction avec d'autres appels portables.

    L'assemblage résultant devrait être pur CLR et fonctionnera avec Mono.

    Cette Page contient tout ce que vous pourriez rencontrer lors de la compilation d'une version qui fonctionne sur Mono. < / p>


1 commentaires

Le point de son ensemble wrapper est susceptible de mélanger du code géré et non géré dans un seul assemblage (ensemble de mode mixte). Restreindre l'assemblage à CLR défaite cela.



-2
votes

Je suggérerais également jetter un coup d'oeil à cela -

http://mono-tools.com/store/

Il existe différents outils disponibles pour vous aider à porter à mono - vous pouvez même déboguer dans Visual Studio et pour emballer pour le déploiement sur Linux.


2 commentaires

Je reçois des postes négatifs alors laissez-moi vous assurer - je ne vends pas ce produit - je pense juste que c'est une bonne idée de regarder des outils et de gagner du temps.


Je pense que les bowvotes sont parce que mono n'exécute tout simplement pas d'assemblages de mode mixte sur Linux. Les monotools ne vous aident pas ici.



4
votes

Mono ne prend pas en charge les ensembles de mode mixte sur les systèmes d'exploitation non-Windows.

Supprimez votre emballage C ++ et réécrivez votre application en utilisant uniquement p / invoke à appeler dans un code natif.

Voir aussi: www.mono-project.com/cplusplus


0 commentaires