[C++] Visual Studio 8 Verschiedene Runtime Versionen

DataNaut

Cadet 2nd Year
Registriert
Nov. 2005
Beiträge
31
Hallo Fachvolk,
ich muss für einen Kunden eine dll mit Visual Studio 8 erstellen, die er in sein Projekt einbinden will. Allerdings hat dieser Kunde eine andere Version: Während der Kunde zwei Hotfixes eingespielt hat, (KB919280 und KB935364) habe ich auf meinem Rechen das SP1.

Es ist nicht möglich, dass ich meine Rechner dem des Kunden anpasse, da ich diese Maschine für andere Projekte benötige.
Der Kunde will selbstverständlich auch seine Rechner nicht unseren anpassen.

Supergeil wäre es, wenn ich Visual Studio sagen könnte, welche Runtime es verwenden soll. Geht so was?
Ich glaube, dass die Version des Kunden "version='8.0.50727.163'" auf meinem Rechner existiert, denn es gibt das Verzeichniss
c:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.163_x-ww_681e29fb

Aus der letzen Mail vom Kunden:
Even though VC8 allows us to build against multiple versions of the dlls you cannot load multiple versions of the dll unless you are using .NET probing mechanism which unique Ids of Dlls instead of dll names. The Load Library function that we use ( and probably you use) will take library name string as the input.
Also scheidet das auch aus (auch wenn ich es nicht richtig verstanden habe).

Unsere dlls verwenden embedded manifests. Meine Hoffnung war, dass die dll dann ihre runtime sucht, die sie benötigt. Es scheint aber nicht so zu sein.

Zudem wird der Ton des Kunden immer unverschämter, (Alles in FETT und ROT und GROSS geschieben... wo bleibt die nettikette?) und die Nerven liegen blank. Aber hier ist ja nicht das Forum um zu jammern ;)

Für Lösungsvorschläge bin ich sehr dankbar.

Der DataNaut
 
Unsere bewährte Lösung ist: Eine VM zum Entwickeln benutzen. Am besten für jedes Projekt eine eigene. Das wäre jetzt was, was ich dir raten würde.
 
Sowas habe ich auch befürchtet. Ich habe einen anderen Rechner genommen, auf dem ich das VC 8 jungfräulich mit den verlangten Hotfixes installiert habe. Leider verlangt das Manifest immer noch die falsche Version, die auf dem Rechner nicht vorhanden ist.

Code:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.163' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
</assembly>

.163 will ich , .762 nicht.
Ich frage mich, woher der Rechner überhaupt weiß, dass es version='8.0.50727.762' gibt. Es ist nicht installiert.
in den .sln und .vcproj ist kein hinweis zu finden.
 
Ich habe das Problem gelöst, indem ich auf einem Rechner Visual Studio 8 neu installiert habe, und dort mein Projekt frisch gebaut habe.
In meinem Projekt befand sich noch versteck eine Objektdatei, die die falsche Runtime gezogen hat. Nachdem das geändert wurde, funktionierte es auch mit dem Kunden.
Vielen Dank an die Hilfeanbieter.
 
Zurück
Oben