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