2012-09-10 2 views
0

J'avais writin un dll en C++ qui fonctionne parfaitement sur C# apps. c'est quelque chose comme çaplate-forme indépendante C++ DLL

#include "stdafx.h" 
#include "fun.h" 

extern "C" __declspec(dllexport)double Add(double a, double b,double k); 
extern double Add(double a, double b,double k) 
{ 
    return a+b+k; 
} 

Maintenant, je veux exécuter ce même DLL sur les changements de MAC je dois avoir dans ma DLL actuelle?

+3

Vous ne pouvez pas écrire de DLL indépendantes de la plate-forme. Ils dépendent de l'architecture (x86 ou x64) et ne fonctionnent que sur les fenêtres. Sur linux vous avez .so et sur mac vous avez .dylib en tant que bibliothèques partagées. – victorsavu3

+0

Vous devriez vous familiariser avec les autres plateformes. La langue est la même mais les bibliothèques et les compilateurs sont souvent différents. Donc, le processus de compilation entier serait également différent. La quantité de travail dépend de la taille et des bibliothèques que vous utilisez dans votre DLL. – bcelary

+0

Comment allez-vous lancer l'application C# sur Mac? Si non, alors qui utiliserait votre bibliothèque? – MSalters

Répondre

4

Vous ne pouvez pas créer une DLL chargée à la fois sur Windows et Mac. Vous devrez recompiler votre code pour Mac.

+0

puis-je compiler C++ dll sur mac ??? m nouveau à MAC .. –

+1

Bien sûr. Vous avez juste besoin d'un compilateur C++ pour le Mac. –

+0

Vous avez besoin d'un compilateur croisé si vous utilisez une plate-forme de développement différente, ou compilez-le dans un environnement de développement MAC approprié. –

0

Vous ne pouvez pas exécuter de DLL sur mac. Mac a sa propre bibliothèque chargée dynamique.

+1

Et qu'est-ce que vous voulez dire "dll" signifie, sinon "bibliothèque chargée dynamiquement". C'est un mauvais choix de vocabulaire, car les résultats ne se comportent pas comme une bibliothèque, mais plutôt comme un seul objet. Mais c'est une bataille que j'ai abandonnée - tout le monde les appelle DLL, même sous Linux. –

0

Si vous insistez pour utiliser C#, je crois que vous avez 2 options. La première option est de voir si votre code fonctionnera en mono sur le mac. Pour cela vous allez créer des exécutables macintosh et des bibliothèques dynamiques.

http://www.mono-project.com/Mono:OSX

http://lipsky.me/2012/7/21/calling-a-dynamic-library-from-monomac-part-1

La seconde est d'utiliser .NET 2.0 ou plus bas et voir si votre application fonctionnera sous le vin sur le macintosh. N'utilisez pas de .NET 3.X ou plus dans votre code puisque .NET 3.X ou plus ne s'installera pas ou aura beaucoup de problèmes dans le vin.

http://appdb.winehq.org/objectManager.php?sClass=version&iId=3754

Questions connexes