Frage

ich VS2008 bin mit einem COM-DLL für die Entwicklung, die durch Standard-CRT-Version verwendet 9 aber ich bin mit TSF (Text Service-Framework), die nicht kompatibel mit dem neuen CRT ist. Ich denke, die Lösung ist, die kompatibel man verwenden, so wie kann ich die CRT-Version angeben?

War es hilfreich?

Lösung

ich ganz herzlich die Empfehlung beitreten nicht , um manuell die CRT-Version ändern gegen Sie verknüpfen. Wenn jedoch aus irgendeinem Grund (die ich mir nicht vorstellen kann) ist dies die richtige Vorgehensweise für Sie, die Art und Weise, dies zu tun ist, um die Manifest für Ihr Projekt.

Vergewissern Sie sich zuerst ein Manifest ist nicht erzeugt auf jedem Build (auf VS2005: Konfigurationseigenschaften / Linker / Manifest-Datei / Generieren Manifest), wie es Ihre manuellen Änderungen überschreiben würden. Stellen Sie außerdem sicher, dass die Isolation aktiviert ist. Als nächstes wird die Manifest-Datei finden - auf dem $ sein sollte (IntDir) (zum Beispiel Debug).

- Sie sollten einen Schnitt ähnlich sehen
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC80.DebugCRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>

(für Debug-Builds, natürlich). Sie müssen die Version und PublicKeyToken Attribute des CRT-Element bearbeiten. Sie können die Dateien auf Ihrem lokalen WINDOWS \ Ordner WinSxS inspizieren die Versionen zu sehen. Überprüfen Sie hier wie die PublicKeyToken zu extrahieren, wenn Sie finden die Version, die Sie wollen. (Obwohl ich würde zuerst versuchen und schauen direkt in Manifesten von anderen Projekten, die Verknüpfung gegen die gewünschte CRT-Version).

Wenn Sie dort gehen Sie, erwarten einige grobe Wasser. Sie können etwas Glück haben, wenn Ihre Anwendung eine Konsole-Anwendung, die nicht gegen andere Side-by-Side ein Anknüpfungs Komponente (MFC, OpenMP, etc.). Wenn Ihre Anwendung nicht-trivial ist, würde ich überrascht, wenn es nicht einige komplizierten Versionsabhängigkeiten sind AMONT die SxS-Komponenten.

(edit) Sie würden auch die spezifische CRT mit Ihrer Anwendung verteilen müssen Sie verwenden. Hier jemand , wer das getan hat.

Andere Tipps

Der einfachste Weg, wird Ihren DLL mit einem VC ++ Version zu erstellen, die die CRT verwendet, die mit TFS kompatibel ist.

Ich glaube nicht, dass es eine gute Idee ist nur Ihre DLL mit einer anderen Version der CRT-Link, wenn Sie auch die gleiche Version der Header-Dateien verwenden. Und der einfachste Weg, das zu tun, wird das Recht VC ++ Version verwenden ...

Wenn Sie immer noch versuchen wollen, können Sie:

  • zur "Konfiguration Einstellungen-> Linker-> Input-> Ignorieren spezifische Bibliothek" und geben Sie die crt Sie verwenden (LIBC.LIB, libcmt.lib etc. sehen diese Code-Projekt Artikel für Details).
  • Geben Sie den Namen der crt Version in verwenden möchten „Konfiguration Einstellungen-> Linker-> Input-> Zusätzliche Abhängigkeiten“, und seinen Weg in „Konfiguration Einstellungen-> Linker-> Allgemein-> Zusätzliche Bibliotheksverzeichnisse“.

Sie können auch versuchen, die Standardverzeichnisse in sich ändern „Extras-> Optionen-> Projekte und lösungs-> VC ++ Verzeichnisse-> Bibliotheksdateien“. Vielleicht $ (VCInstallDir) lib auf dem Pfad, in dem Sie andere Version der CRT wohnt ändert den Trick

Versuchen Sie nicht, VS9 und Link auf eine andere Version der CRT zu verwenden.

Wenn Sie Ihre Anwendung müssen auf eine andere CRT zu verbinden, sagen VS8 CRT, dann müssen Sie kompilieren und verknüpfen Sie Ihre App in dieser Version von VS.

Die Lösung funktionierte für mich mit Visual Studio Express 2013 x64 + OpenCV 2.4.9 x64 kompiliert, debug (I integriert, dass in LV2013 x64), aber es sollte für jede andere VS-Version arbeiten:

1) Rechtsklick auf Ihrer Lösung> Eigenschaften> Quelldateien debuggen ...

2) Es gibt vielleicht zwei entires (je nach VS-install-Verzeichnis) ... C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ vc7 \ atlmfc C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ vc7 \ crt

diese mit ihm für Visual Studio 2013 Express funktionieren würde, aber sollte auch für andere 2013 arbeiten Wenn Sie 10 Visual Studio haben oder 11 einfach „Microsoft Visual Studio 11.0“ oder 10.0 in jedem. Sie können auch hinzufügen, nur um sie.

Diese Einträge, die Sie von Ihrem OpenCV.sln unter Lösung erhalten können> Eigenschaften> Debug-Quelldateien (wie oben beschrieben). Und wie bereits decribed. CRT braucht ... entsprechen und dies geschieht in diesem Ort

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top