2016-04-07 1 views
1

J'ai besoin de porter une bibliothèque .NET sur Linux pour l'exécuter avec Mono.Utiliser une DLL en mode mixte (géré/non géré) sous Linux (mono)

La bibliothèque elle-même est écrite en C#, mais elle fait référence à une autre DLL en mode mixte écrite avec C++ géré et non managé et expose les wrappers gérés aux classes non managées.

Je suppose que la DLL ne fonctionnerait pas seulement sur Linux vu qu'elle a été compilée avec VS pour Windows. PS: la DLL en mode mixte lie uniquement libpng et zlib qui ont tous les deux des ports Linux.

1) Y at-il un moyen facile de contourner ce problème?

2) Est-ce que WINE peut être utilisé en conjonction avec un mono pour couvrir la partie non mémorisée de la bibliothèque? Et si oui, est-ce que cela va causer des problèmes de performance?

+0

en mono pythonnet est intégré pour travailler autour de cette question: https://github.com/pythonnet/pythonnet/blob/master/src/monoclr/pynetclr. h – denfromufa

Répondre

1

Mono ne prend pas en charge les assemblages en mode mixte, vous pouvez donc essayer si WINE peut vous aider.

L'approche réaliste consiste à utiliser CppSharp, https://github.com/mono/CppSharp

+0

cppsharp ne supporte pas le reverse pinvoke (dllexport) https://github.com/mono/CppSharp/issues/613 – denfromufa