2009-04-10 6 views
3

J'ai créé un projet wn32 avec Visual Studio 2008 et Visual C++ langage, il utilise la bibliothèque Ws2_32.lib puis je compilé en le mode de sortie.A application C++ compilé avec VS2008 ne fonctionne pas dans d'autres ordinateurs

Il fonctionne très bien sur le même ordinateur, mais lorsque je copie le fichier exe sur un autre ordinateur (qui n'a pas installé Visual Studio), il ne fonctionne pas.

Le message que je vois est:

Cette application n'a pas pu démarrer car la configuration de l'application est incorrecte. Réinstaller l'application peut résoudre ce problème.

Mais, si je compile mon application à l'aide DEV C++, il génère un plus grand exécutable (738KB) par rapport à l'exécutable Visual Studio 2008 (9,5 KB). Toutefois, l'exécutable DEV C++ s'exécute dans l'autre ordinateur.

J'ai ajouté la bibliothèque ws2_32.lib aux propriétés de l'éditeur de liens de mon projet, dans le champ Dépendances supplémentaires. Comment puis-je résoudre le problème pour travailler avec Visual Studio 2008?

Mon code est le suivant: http://www.stan.com.mx/yupi/udpserver.cpp

+0

Merci à tous pour vos précieuses informations. – kiewic

+0

J'allais juste poser la même question. Merci pour le dur travail. – zeroDivisible

Répondre

1

Je suis d'accord avec JaredPar. L'application que vous construisez avec VS2008 utilise la liaison dynamique, alors que le DEV C++ lie statiquement, d'où la plus grande taille et pourquoi on travaille et pas l'autre. Cependant, si c'est un projet d'application simple win32 que vous avez (et que vous ne voulez pas/devez le distribuer avec une configuration), vous pouvez le faire fonctionner sur une autre machine sans redistribution. le CRT en obtenant VS2008 pour lier statiquement pour vous (si c'est juste la lib standard que vous manquez). Je n'ai pas de copie de VS2008 à portée de main, je vais donc décrire comment le faire dans VS2005 et j'espère que ça se traduira dans l'ensemble.

  1. Apportez les propriétés de configuration pour le projet (clic droit sur le nom du projet, puis sélectionnez « Propriétés » dans le menu)
  2. Développez « Propriétés de configuration », puis « C/C++ », puis cliquez sur « Génération de code "
  3. Sous l'élément" Runtime Library ", pour votre configuration particulière, sélectionnez la version non-DLL de la bibliothèque, c'est-à-dire pour les versions de débogage" Multi-threaded Debug (/ MTd) et -filée (/ MT) "

Essayez et voyez si cela fonctionne. Vous obtiendrez évidemment un binaire final beaucoup plus grand maintenant que la bibliothèque est liée statiquement.

11

Le problème est presque certainement que l'autre ordinateur ne possède pas la version 9 du CRT C++ installé.

Le paramètre par défaut pour la compilation sur le CRT dans VS2008 est le lien dynamique par rapport à la liaison statique. Si vous souhaitez déployer votre programme avec un vrai projet d'installation, vous devez inclure le redistribuable CRT. Toutefois, si vous souhaitez effectuer un déploiement XCOPY, suivez les étapes décrites à la page suivante.

http://msdn.microsoft.com/en-us/library/ms235291.aspx

1

Vous pouvez manquer une dépendance externe requise par votre programme. Vérifiez les paramètres du projet pour voir si vous liez dynamiquement MFC par exemple. Vous pouvez également exécuter l'utilitaire Depends pour vérifier les dépendances manquantes.

Questions connexes