Visueel C++ uitvoerbaar en ontbrekend MSVCR100d.dll

Ik weet dat dit op andere plaatsen is gevraagd en beantwoord, maar ik heb problemen met MS Visual Studio 2010. Ik heb een C++ uitvoerbaar bestand ontwikkeld, maar als ik de Release-versie op een machine uitvoer die niet over de VC++ runtime-bibliotheek (dwz msvcr100d.dll), krijg ik de foutmelding “programma kan niet starten omdat msvcr100d.dll op uw computer ontbreekt”.

Dit is om twee redenen raar:

  • Waarom probeert het te linken met de foutopsporingsversie van het herdistribueerbare bestand?
  • Ik heb geprobeerd deze oplossingtoe te passen, het instellen van de runtime-bibliotheekinstelling op /MT in plaats van /MD (multi-threaded DLL), maar dat maakte het probleem alleen maar erger (als ik msvcr100d.dll handmatig kopieerde, zei het toen dat het msvcp110.dll niet kon vinden).

Hoe kan ik de runtime-bibliotheek verpakken met mijn uitvoerbare bestand zodat ik het kan uitvoeren op machines waarop MS VC 2010 of het herdistribueerbare bestand niet is geïnstalleerd?

Ik weet dat het als een veiligheidsrisico wordt beschouwd om een kopie van de DLL op te nemen, aangezien deze nooit zal worden bijgewerkt, maar mijn doel is om dit uitvoerbare bestand op korte termijn naar een paar vrienden te sturen.


Antwoord 1, autoriteit 100%

Je zou de debug-versie van de CRT zeker niet nodig moeten hebben als je compileert in de “release”-modus. U kunt zien dat dit de foutopsporingsversies van de DLL’s zijn omdat ze eindigen op een d.

Meer ter zake, de debug-versie is nietherdistribueerbaar, dus het is niet zo simpel als het “verpakken” met je uitvoerbare bestand, of het inpakken van die DLL’s.

Controleer om er zeker van te zijn dat u allecomponenten van uw toepassing compileert in de “release”-modus, en dat u de juiste versie van de CRT en alle andere bibliotheken die u gebruikt (bijv. , MFC, ATL, enz.).

U zalnatuurlijk msvcr100.dllnodig hebben (let op de afwezigheid van het achtervoegsel d) en enkele andere als dat niet het geval is al geïnstalleerd. Vraag je vrienden om de Visual C++ 2010 Redistributable( of x64), of voeg dit automatisch toe aan uw aanvraag door een installatieprogramma te bouwen.


Antwoord 2, autoriteit 5%

Bij mij deed het probleem zich voor in deze situatie:

Ik heb VS2012 geïnstalleerd en had VS2010 niet meer nodig.
Ik wilde mijn computer opschonen en ook de uitvoerbare bestanden van de VS2010-runtime verwijderen, omdat ik dacht dat geen ander programma het zou gebruiken.
Toen wilde ik mijn DLL testen door het aan een programma te koppelen (laten we het programma X noemen).
Ik kreeg dezelfde foutmelding.
Ik dacht dat ik iets verkeerd deed bij het compileren van de DLL.
Het echte probleem was echter dat ik de DLL aan programma X heb gekoppeld en dat programma X is gecompileerd in VS2010 met foutopsporingsinformatie. Dat is de reden waarom de fout is gegooid.
Ik heb programma X opnieuw gecompileerd in VS2012 en de fout was verdwenen.


Antwoord 3, autoriteit 5%

Dit probleem wordt uitgelegd in MSDN-bibliotheek en zoals ik begrijp kan het helpen om het herdistribueerbare pakket van Microsoft te installeren.

Maar soms kan de volgende oplossing worden gebruikt (als oplossing voor ontwikkelaars):

Open in uw Visual Studio Project properties -> Configuration properties -> C/C++ -> Code generation
en verander optie Runtime Libraryin /MTin plaats van /MD


Antwoord 4, autoriteit 2%

Meestal geeft de applicatie die de .dll mist aan welke versie je nodig hebt – als een niet werkt, download dan gewoon de Microsoft visual C++ 2010 x86 of x64
via deze link:

Voor 32-bits besturingssysteem:Hier

Voor 64-bits besturingssystemen:Hier


Antwoord 5, autoriteit 2%

Ik kreeg dezelfde fout.

Ik verwees naar een VS2010 DLL in een VS2012-project.

Zojuist de DLL opnieuw gecompileerd op VS2012 en nu is alles in orde.


Antwoord 6, autoriteit 2%

Debug-versie van de vc++ bibliotheek-dll’s zijn NIET bedoeld om opnieuw te worden gedistribueerd!

Debug-versies van een applicatie kunnen niet opnieuw worden gedistribueerd, en debug
versies van de Visual C++-bibliotheek-DLL’s kunnen niet opnieuw worden gedistribueerd. Jij
kan foutopsporingsversies van toepassingen en Visual C++ DLL’s alleen implementeren om:
uw andere computers, uitsluitend voor het debuggen en testen
de toepassingen op een computer zonder Visual Studio
geïnstalleerd. Zie Visual C++-bestanden opnieuw distribueren voor meer informatie.

Ik zal ook de link verstrekken: http://msdn.microsoft. com/nl-nl/bibliotheek/aa985618.aspx

Other episodes