Implementere applikation udviklet ved hjælp af C ++

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en applikation, der bruger wxWidgets som en brugergrænseflade og kompileret ved hjælp af Visual Studio 2010 på Windows 7-maskine. Jeg linker wxWidgets statisk. Min ansøgning bruger også en C dll til behandling.


Nu forsøger jeg at køre denne applikation på en anden nyinstalleret maskine (Win7). Dette har ikke en opsætningsmodul for udviklere. Jeg har kopieret programmets eksekverbare fil, understøttende dll og andre understøttende tekstfiler til denne maskine.


Når applikationen starter, gav den følgende besked.


The program failed to start because MSVCR100d.DLL is missing from your computer. Try reinstalling the program to fix this problem.


Jeg regnede med, at mit C-bibliotek brugte fejlfinding og kompilere det i Release -modus løst problemet. Men det beder stadig om MSVCR100.dll. Jeg tror, ​​at vejen til løsning er at installere VC ++-omfordelbare pakken. Men ikke sikker på det er den bedste tilgang.


Her er mine spørgsmål.



  1. Hvordan bruger du normalt ansøgningen? Tilbyder du også VC + + -fordelingspakken?

  2. Jeg kompilerer dette på en 64 bit maskine og test på en 32 bit. Er dette ok? Eller skal jeg komponere separat for 32 bit?

  3. Kan jeg statisk linke til kørselstidsbiblioteket? Så jeg kan bare sende mine DLL'er og andre filer.

  4. Hvad er de andre almindelige ting, som jeg bør være opmærksom på, når jeg opretter eksekverbar, som kører på mange maskiner?



Følgende er nogle af mine indstillinger, som kan være relevante.


General : 
    Use of MFC : Use standard windows libraries
    Use of ATL : Not using

C/C++ :
    Runtime library : Multi-threaded(/MT)


Enhver hjælp ville blive værdsat.

Bedste reference


Det forsøger at bruge en fejlfind kun DLL på en maskine, der ikke har den.


Dit problem stammer fra, at msvcr100d.dll kun er en fejlfinding dll angivet af den efterfølgende d.


Således bruger du IKKE/MT, bruger du faktisk/MDd. Hvis du brugte/MT så ville det nto forsøge at indlæse den DLL ...


Så som svar på dine spørgsmål:



  1. Jeg foretrækker at forbinde statisk med run-time.

  2. Det er virkelig ikke et problem. Prøv ikke at køre en 64-bit kompileret binær på et 32-bit OS.

  3. Ja.

  4. Pas på din minimale specifikation. dvs. brug ikke SSE4, hvis du har brug for at understøtte en Pentium 3 ... osv.


Andre referencer 1


Dette synes at være det samme spørgsmål som det andet hit, da jeg googled 'vil x86 exe arbejde på x64'; det svarer ikke på alt, men det har få svar.


http://social.msdn.microsoft.com/Forums/en/netfx64bit/thread/5ad0ff2c-558c-43ba-a59d-9cd0a0785103[7]


Du kan sikkert finde flere lignende oplysninger, hvis du ser ud over den anden, og hvis du spørger om et par andre ting.


Hvad angår VC ++ runtime ting, undgår jeg MS 's C ++ version som plaget selv og har derfor ingen erfaring med det, men jeg troede stadig, at alle moderne Windows-computere skulle have de nødvendige runtime komponenter af alle deres ting (VC ++, .NET, osv.) Allerede inkluderet.

Andre referencer 2



  1. Ja, det er nødvendigt at levere VC + + -fordelingspakke. Den bedste måde er at lave en installationspakke ved hjælp af Visual Studio Setaul og Deployment-projektet.

  2. Det er OK, hvis du kompilerer 32 bit eksekverbare.

  3. Jeg anbefaler ikke dette, så store eksekutorer ser ikke professionelle ud.