Question

Ce qui est dans la bibliothèque d'exécution MS Visual C ++? Je veux dire, je googlé, et j'ai toujours trouvé des choses comme aide, app xxxx me donne MS Visual C ++ erreur de bibliothèque d'exécution, sans explication.

Je pensais que les bibliothèques d'exécution C Windows viennent avec Windows? Pas avec VC ++? Merci.

EDIT: Tout d'abord, merci pour les réponses. Je chose que j'ai maintenant mauvaise idée des bibliothèques d'exécution dans les fenêtres. Je veux dire, la première partie, que Windows a en interne son API win32 et ainsi, c'est OK, je le savais. En outre, que Win32API sont des parties du noyau et de l'utilisateur.

Mais je pensais toujours que des fonctions comme GDI sont accessibles en tant que DLL (que je crois encore qu'ils sont). Mais je pensais même des fonctions comme printf et sont donc dans certains fichiers Windows.

Alors, suis-je raison, quand je sais l'obtenir que les fonctions « simples » comme printf doivent être liés directement et que d'utiliser seulement une partie du noyau du système d'exploitation directement, et les fonctions de l'API Windows plus sophistiquées sont liées comme dll, ne sont donc pas distribué avec le compilateur mais avec OS? Et ils accèdent à la suite du noyau?

Je veux dire, disons que GDI, je dis à dessiner l'image, il fait tout le travail en mode utilisateur et que la fonction du noyau d'appel qui met tout cela Framebuffer?

Et la pensée dernière, pourquoi est-ce même résolu de cette façon? Je veux dire, si l'exécution de VC est la couche juste entre C et WinAPI, pourquoi ne peux pas l'appel de VC directement WinAPI?

Était-ce utile?

La solution

Une brève réponse serait que le VSM runtime C / C ++ implémente des fonctions comme malloc / libre, stdio, iostream et certains c ++ - des trucs comme dynamic_cast et la gestion des exceptions. Ces diffère entre les versions de Visual Studio, donc il y a différents runtimes pour différentes versions.

navire de Windows pour la plupart avec une API C (l'API Win32) qui assez différent de la bibliothèque standard C / C ++. Le temps d'exécution MSVS C / C ++ remet en cette API pour allouer de la mémoire, etc etc.

(je suppose que quelques-unes des applications incluses avec Windows sont écrites avec VSM et en C ++, de sorte qu'ils ne comprennent le moteur d'exécution MSVS pour cette version.)

En outre, les changements d'exécution que les nouvelles versions de Visual Studio sont libérés. Une version Windows dure beaucoup plus longtemps que cela.

Autres conseils

Ceci est une simplification excessive, mais il vous donnera l'essentiel. Le MSVCRT est un ensemble de DLL qui implémente des parties du langage C ++. Des fonctions telles que printf, memcpy et similaires sont mis en œuvre dans ces DLL.

Chaque programme est compilé avec un compilateur particulier et dynamique lié aux runtimes du C doit avoir en quelque sorte la version correcte des binaires CRT sur la machine cible. Par conséquent, les applications qui expédient pour les utilisateurs finaux sont souvent (en général?) A également livré avec un ensemble de ces DLL. Ce paquet est appelé un « redistribuables » (ou « Redist »), et il y a un différent pour chaque combinaison de la version exacte du compilateur et plate-forme cible. Par exemple, il y a des redists séparés et distincts pour chacun des éléments suivants:

  • MSVC 10, les fenêtres 64 bits
  • MSVC 10, Windows 32 bits
  • MSVC9, Windows 64 bits
  • MSVC9 SP1, Windows 64 bits

et ainsi de suite.

Oui, Windows habituellement "est livré avec" une version du CRT. Cependant, il est livré avec la version (s) dont il a besoin pour exécuter les applications livrés avec Windows. Si Windows et toutes ses applications ont été compilées dans MSVC8 SP2 et votre application est compilée dans MSVC10, le CRT besoin ne sera pas présent sur la boîte simplement parce qu'il est en cours d'exécution de Windows.

Voilà pourquoi sa pratique courante pour expédier applications avec redists.

EDIT:

A titre de Houdini comme par magie, je prédis votre prochaine question sera « où puis-je obtenir les redists? »

La réponse est, de MicroSoft. Essayez une recherche Google pour "msvc 9 x64 Redist" et vous trouverez:

http: // www.microsoft.com/downloads/en/details.aspx?familyid=bd2a6171-e2d6-4230-b809-9a8d7548c1b6&displaylang=en

Ils sont les bibliothèques qui mettent en œuvre les fonctions de la bibliothèque standard C et C ++. Les fonctions standard telles que printf sont mises en œuvre dans ces bibliothèques.

Les principales bibliothèques de Windows ne fournissent que des interfaces pour les appels système, à savoir le de, depuis est tout ce que vous devez construire une application Windows complet. Les bibliothèques VC sont pour la plupart des emballages autour de cette API, et sont analogues à la bibliothèque glibc sur Linux.

À titre d'exemple, malloc de la bibliothèque C pourrait à son tour utiliser le VirtualAlloc API pour allouer de la mémoire.

Les programmes compilés avec Visual C ++ nécessitent une « exécution » -. C'est un peu de code qui gère le démarrage de l'application / arrêt, d'allocation de mémoire / désallocation, support pour la lecture et l'écriture de fichiers, etc

Ce ne fait pas partie du système d'exploitation, et ne fait pas partie de la demande finale - Parce que toutes les applications de C peuvent partager, par défaut, le temps d'exécution est une installation séparée

.

En outre, chaque version de Visual C ++ a son propre programme d'installation d'exécution, car avec chaque version, il existe de légères différences et l'amélioration de la façon dont tout cela fonctionne. Il y a aussi différentes verisons du moteur d'exécution pour différentes plates-formes (par exemple x86 et x64)

Par conséquent, il y a un certain nombre de "programme d'installation d'exécution Visual Studio XXXX (YYY)" téléchargements disponible auprès de Microsoft, où XXXX est la version Visual Studio (2005, 2008, 2010, etc.), et YYY est généralement "x86" ou "x64".

La plupart des applications qui ont besoin de l'exécution installera automatiquement si nécessaire, si des utilisateurs finals en général ne sont pas très au courant de ces redistribuables.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top