c # - Kan et Windows Server 2003 32-bit maskinapplikation arbejde for en Windows Server 2008 64-bit maskine?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger en 32-bit maskine i Windows Server 2003. Ved hjælp af den pågældende maskine har jeg oprettet en COM-komponent og forbrugt den i en anden applikation og har en EXE-fil.


Nu kopierer jeg EXE til en anden maskine installeret med Windows Server 2008, 64-bit.


Og når jeg forsøger at køre den EXE, viser den noget som 'Fejlfeil: Denne applikation har brugstid og afslutter på en usædvanlig måde'.


Er bitness (32-bit versus 64-bit) kompatibilitet grunden til dette? Hvad kunne jeg bruge til at køre dette på en Windows Server 2008-maskine?

Bedste reference


Når du kompilerer din app, skal du sørge for at kompilere den til 32 bit. Som standard compilerer Visual Studio for 'Any'. Dette fører til, at nogle dele af din app er 32 bit og bruger 64 bit DLL'er.

Andre referencer 1


NET Framework indbygget i Server 2008 er v3.0. Kræver din ansøgning. NET v3.5? Hvis det er tilfældet, skal du installere .NET 3.5 Redistributable pakken i Server 2008.


http://download.microsoft.com/download/6/0/f/60fc5854-3cb8-4892-b6db-bd4f42510f28/dotnetfx35.exe[2]

Andre referencer 2


Det skal fungere, takket være WOW64.
Du kompileret som debug eller release version?
Og kan den finde alle de referencer, du bruger? [3]

Andre referencer 3


Hvilket udviklingsmiljø bruger du? Det lyder som om dine projekter er konfigureret til at bruge C ++ runtime DLL til en version, der ikke er installeret på målboksen.


Der skal være et VC\_Redist.exe sted i dit udviklingsmiljø, som du kan kopiere og udføre på målboksen for at installere de nødvendige runtime-samlinger.


Eller gå til hvert -projekt, EXE og DLL'er, og sørg for, at indstillingen 'Runtime Library' under siden for Project Properties-> C/C ++ -> Code Generation er indstillet til en af ​​de ikke-DLL-muligheder (/MTd eller/MT). Dette vil omgå behovet for at installere en separat runtime på mål-pc'en, men vil gøre dine EXE'er og DLL'er lidt større.