Avatar billede connorz Nybegynder
11. juni 2007 - 13:48 Der er 1 løsning

dll forvirring

Jeg har skrevet en C++ dll i VS2005 til .NET (dvs. med clr support). Denne dll benytter jeg i et andet .NET program. Dette program har ingen problemer med at eksekvere på den maskine, hvor jeg compiler det (maskine 1). Men når jeg flytter programmet til en anden computer (maskine 2), går det ned under opstart. I min C++ dll kan jeg i manifestet se følgende:
<assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />

Dvs. min assembly benytter (som forventet) vc runtime biblioteket. Versionen er åbenbart 8.0.50727.762. Jeg kan på maskine 1 i c:\windows\winsxs, at der et bibliotek, der hedder
x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700
Jeg går ud fra, at den finder runtime biblioteket her. På maskine 2 eksisterer dette bibliotek ikke, så jeg går ud fra, at det er problemet. Men der er et bibliotek, der hedder
x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd
Det ser altså ud til, at maskine 2 ikke har en ny nok version.

Jeg har prøvet at tage de to benyttede dll'ere (msvcr80.dll og msvcm80.dll) + deres manifest og lægge det i eksekveringsbiblioteket på maskine 2. Og så virker programmet. Problemet er bare, at gør jeg det samme på maskine 1, virker det ikke her! Og i øvrigt er det vel meningen med hele winsxs showet, at man ikke skal lægge sine runtime biblioteker med, ik?

Jeg har installeret det nyeste .NET framework 2.0 på maskine 2 - er runtime biblioteket en del af det?

Hvad skal jeg gøre, så jeg kan "rulle" applikationen ud og være sikker på det virker på mål maskinerne?

Hvad gør jeg for at få det til at virke på andre maskiner
Avatar billede connorz Nybegynder
14. juni 2007 - 10:29 #1
Jeg har nu selv fundet en løsning. Den nyeste version af .NET 2.0 installere kun 42 versionen, mens visual studio 2005 kompilerer til 762 version. For at en "anden" maskine skal kunne køre applikationen, skal 762 være tilstede. Den kan installeres med den nyeste VC++ redistributable, som jeg har fundet her:

http://www.microsoft.com/downloads/details.aspx?familyid=32bc1bee-a3f9-4c13-9c99-220b62a191ee&displaylang=en

Hvorfor den nyeste ikke er inkl. i den nyeste .NET er mig en gåde!

Så jeg tager selv pointene :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester