2010-01-22 5 views
0

J'ai un code écrit en C++. C'est une application de console qui prend une entrée et affiche la sortie. Maintenant, je peux juste donner mon a.out à quelqu'un sans leur donner le code et cela devrait fonctionner sur un autre système Unix. mais si ils ont l'environnement Windows. Je voudrais apprendre comment faire dll pour eux afin qu'ils puissent exécuter cela.déplacer le code d'unix à Windows XP

également, si elles allaient l'utiliser dans le cadre d'un autre programme, je suppose que je devrais faire une api ou une fonction pour eux. Mais je ne suis pas sûr de savoir comment cela fonctionne avec les DLLs comme je ne l'ai jamais fait auparavant.

Répondre

0

Vous devez recompiler votre application pour Windows, soit sur un ordinateur Windows, soit en utilisant un compilateur croisé. Cela nécessite que toutes les routines que vous utilisez soient également disponibles sous Windows. Soit vous avez écrit votre application à partir de zéro en utilisant des bibliothèques portables (lisez: pas d'appels systèmes unix/posix), soit vous aurez des problèmes à faire passer votre code sous Windows. Cygwin peut probablement aider, vérifiez-le.

Si vous dites que c'est une application de console pure, je suppose que vous utilisez std::cout et std::cin ou d'autres choses de la bibliothèque standard C++. Ceux-ci sont en effet universellement disponibles sur chaque implémentation C++.

+0

Cygwin ne peut pas être utilisé avec un logiciel propriétaire sans une licence spéciale (que vous devez payer). –

+0

oui j'utilise juste tous les trucs std. Soo serait-ce un problème sur Windows ou Unix? Bien sûr, j'ai besoin de le recompléter pour chaque env pour Windows XP, je ne suis pas sûr de savoir comment tout ça fonctionne. – djones2010

+0

Pourquoi avez-vous besoin d'une DLL si c'est une application de console exécutable? Une DLL est l'équivalent Windows pour une bibliothèque partagée (* .so) sous Linux. Il permet aux applications de charger dynamiquement des bibliothèques externes et de les utiliser. Dans votre cas, vous obtenez un fichier PE EXE simple qui est Windows '' a.out ''. Le compilateur liera à quelques DLL système Windows (c'est-à-dire kernel32.dll) mais cela est fait automatiquement et ils font partie de Windows. "Distribuez juste votre EXE à vos amis et vous allez bien, j'espère. –

4

Maintenant, je peux donner mon a.out à quelqu'un sans leur donner le code et il devrait fonctionner sur un autre système unix .

Non, il ne devrait pas et ne le sera certainement pas. Les exécutables ne sont généralement pas portables même sur des systèmes d'exploitation étroitement liés, et la plupart des versions d'Unix ne sont pas trop étroitement liées. Vous devez compiler votre application pour les systèmes d'exploitation cibles spécifiques (et "unix" n'est pas assez spécifique).