2009-06-15 4 views
3

J'essaie de compiler une application C très simple en utilisant VS2008. Mon problème est que le binaire résultant nécessite que les systèmes aient .NET installé. Aucun code au sein du projet n'utilise la fonctionnalité .NET, mais j'obtiens des erreurs lors de l'exécution sur tout système ne disposant pas de .NET.Comment compiler en utilisant VS2008 pour que binary ne nécessite pas .NET?

Alors, est-il de toute façon de compiler en utilisant VS2008 de sorte que le binaire résultant peut fonctionner sur un système sans .NET?

+0

Voir aussi: http://stackoverflow.com/questions/768585/why-does-my-visual-studio-win32-project-require-net-3-5-sp1-to-install/768604 –

Répondre

3

Dans la boîte de dialogue Propriétés du projet, allez à Propriétés de configuration | Général. L'option "Common Language Runtime support" doit être définie sur "No Common Language Runtime Support". Puis reconstruire.

EDIT: Vérifiez également les options de l'éditeur de liens avancées dont le nom commence par CLR. Vous ne devriez voir aucun paramètre/CLR * pour ces 3 éléments. Si vous utilisez un manifeste autre que celui par défaut, assurez-vous qu'il ne déclare aucune dépendance CLR.

+0

Mine est définir de cette façon, mais quand j'essaie d'exécuter l'exe sur un système sans .NET, je reçois cette erreur: "Le système ne peut pas exécuter le programme spécifié." Lorsque j'installe .NET cela fonctionne bien. –

+0

Avez-vous d'autres indications que votre binaire nécessite .NET? –

+0

Comment installez-vous .Net sur le système? Installez-vous .NET ou Visual Studio? Essayez-vous d'exécuter une version de débogage sur un système qui n'a pas Visual Studio? Les fichiers binaires de débogage ne sont pas redistribuables. –

3

créer simplement un projet C/C++. Dans la boîte de dialogue "Nouveau projet", sous Visual C++, vous avez un tas d'options. Tous ceux de la sous-catégorie CLR sont .NET (C++/CLI), et ceux de Win32 (ainsi que "Projet vide") sont des projets C/C++ natifs.

Vous pouvez modifier ce paramètre sur les projets existants propriétés du projet -> Général -> Common Language Runtime Support.

Modifier

Il est possible que le problème est pas réellement .NET, mais le moteur d'exécution C. Dans ce cas, spécifiez les versions non-DLL sous Propriétés du projet -> C/C++ -> Génération de code -> Bibliothèque d'exécution.

(Et si tel est le cas, vous auriez pu faire les choses beaucoup plus facile pour tout le monde en nous disant ce que vous saviez , plutôt que ce que vous supposiez sur le problème;).)

0

Créer un projet de console win32.

1

Comme d'autres l'ont dit, définir le "Common Language Runtime support" option "No Common Language Runtime Support." Vous avez dit que cela ne l'a pas corrigé, alors .NET ne doit pas être la dépendance manquante. Jetez un oeil à l'outil gratuit Dependency Walker. Cela vous montrera toutes les bibliothèques dont dépend votre application.

Questions connexes