2009-02-17 11 views
2

Selon les suggestions de this thread en cours d'exécution C# apps sans .NET J'ai compilé mon application en mono. J'ai construit l'application originale en utilisant la dernière version Visual C# .NET Express Edition. Il fonctionne bien sur .NET sous Windows. Je me suis alors ouvert jusqu'à Cygwin et navigué à ma source où je compilé à nouveau le projet, sous mono en utilisant la commande suivante:Mono mkbundle outil incapable de créer binaire avec la plainte que le fichier de sortie est indisponible

$ mcs <myProjectHere>.cs 

Ce produit MyProject.exe, qui peut être exécuté à partir de Cygwin avec succès, et peut être exécuter à partir de la ligne de commande Windows avec succès. Les commandes utilisées sont les suivantes:

$ mono MyProject.exe 
C:\...>mono MyProject.exe 

et juste pour le plaisir, tout simplement:

C:\...>MyProject.exe 

Tous les travaux comme prévu. J'ai ensuite essayé de construire les mono exécutable compilé en un binaire lié statiquement en utilisant la commande mkbundle comme suit:

$ mkbundle -o MyProject MyProject.exe --deps 

C'est là que les choses commencent à descendre. Il commence assez bien et se plaint ensuite que le fichier de sortie (vraisemblablement, MyProject.exe) ne peut pas être ouvert car il est occupé. La sortie complète de tout cela est ici:

 
    $ mkbundle -o Program Program.exe --deps 
    OS is: Windows 
    Sources: 1 Auto-dependencies: True 
     embedding: c:\Documents and Settings\bsweeney\My Documents\Visual Studio 2008 
    \Projects\TestConsole\TestConsole\Program.exe 
     embedding: C:\PROGRA~1\Mono-2.2\lib\mono\2.0\mscorlib.dll 
    Compiling: 
    as -o temp.o temp.s 
    gcc -mno-cygwin -g -o Program -Wall temp.c `pkg-config --cflags --libs mono|dos2 
    unix` temp.o 
    /usr/lib/gcc/i686-pc-mingw32/3.4.4/../../../../i686-pc-mingw32/bin/ld: cannot op 
    en output file Program.exe: Device or resource busy 
    collect2: ld returned 1 exit status 
    [Fail] 

Je prétends que mon toolchain gcc unix est installé et en bon état parce que je suis en mesure de compiler avec succès quelques C++ des applications dans Eclipse en utilisant récemment (bien que je supposé que je devrais être ouvert à n'importe quel nombre de problèmes ...).

Quelqu'un at-il jamais rencontré quelque chose comme ça? Je suis perplexe ...

Répondre

5

Il semble qu'il essaie de sortir en MyProject.exe, qui est le même que le fichier d'entrée.

Essayez d'exécuter

$ mkbundle -o ProgramOutput Program.exe --deps 

Ceci est juste une supposition, d'ailleurs, puisque je ne sais pas mkbundle.

+0

Cela a réellement fonctionné! Je pensais que 'Program' et' Program.exe' seraient deux fichiers distincts mais il s'avère que 'cygwin' ou peut-être' mkbundle' ajoutait '.exe' à la fin de' Program'. –

+2

Wow, mes pouvoirs psychiques s'améliorent! L'indice était le message 'impossible d'ouvrir le fichier de sortie Program.exe', soit dit en passant. – configurator

+0

est logique - j'ai supposé qu'il faisait référence au programme d'entrée qui * était * en fait nommé Program.exe. en tout cas je vois maintenant l'erreur de mes manières ... merci! –