Sonntag, Dezember 8, 2019

Kompilieren von 32-bit-Anwendung mithilfe von Visual Studio auf einem 64-bit-Maschine

Ich versuche zu kompilieren eine einfache 32-bit-Anwendung „Hello World“ in C geschrieben mit Visual Studio 2010 auf einem 64-bit-Rechner auf einem Windows 7 frisch installieren. Ich habe auch installiert das „Windows SDK für Windows 7 und .NET Framework 4“ nach der Installation von Visual Studio.
Ich baute die Anwendung auswählen „Win32“ als Plattform. Es funktioniert auf Windows 7 aber wenn ich die Anwendung ausführen, auf meinem 32-bit-Maschine mit Windows XP Professional (frisch installiert, ohne Software und Service-Packs) es scheint funktioniert nicht diese Fehlermeldung bekommen:

"This application has failed to start because msvcr100.dll was not found"

Wenn es nützlich sein kann, Dependency Walker erkennt 2 Fehler (siehe das verlinkte Bild für details):

"Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module."
"Error: Modules with different CPU types were found."

http://img820.imageshack.us/img820/4725/errordp.png (Bild)

Wie kann ich es lösen? Danke!

InformationsquelleAutor mt22 | 2011-08-11

4 Kommentare

  1. 2

    Nicht Vertrauen Dependency Walker auf dieses… Es zeigt deutlich deine exe-Datei ist 32 bit. Dein problem ist mit dem VC-redistributables, die die CRT-dlls – look für vcredist_x86.exe in Ihrem VS-installation. Sie sollten es ausführen, bevor Sie führen Sie Ihre app aus.

    Eine weitere Möglichkeit ist statisches linken der CRT. Finden Sie die Option /MT. Wird die exe größer, aber speichern Sie die vcredist Zeug.

    • Ich habe die option /MT, aber dieses mal bekomme ich „die Prozedur Eintrag Punkt decodepointer nicht gefunden werden konnte in der dynamic link-Bibliothek kernel32.dll“ warum?
    • DecodePointer wird unterstützt von XP SP2 an. Kompilieren Sie mit /MT / MT hat nur bekommen Sie weitere, auf die Bühne, wo das ist Ihr problem… dynamisch verknüpfen geführt hätte mit dem gleichen Problem. Entweder kompilieren, um die basic-version von XP, oder aktualisieren Sie die XP.
    • Ok, danke @eran, eine andere kleine Frage: warum habe ich nicht das Vertrauen Dependency Walker auf Fälle wie diese? Und was diese Fehler bedeuten?
    • *die „x64“ unter CPU
    • dependency walker bekommt die Abhängigkeiten richtig, aber für einige Gründe, manchmal wird die Bitanzahl falsch. Weiß nicht, warum dies so ist, aber es ist ein ziemlich altes tool (dachte immer noch sehr nützlich), und es scheint nicht zu sein, erhalten diese Tage…
  2. 2

    Das problem hier ist die C-runtime verwendet das kompilierte Programm ist, fehlt auf der Windows XP Maschine. Visual Studio 2010 standardmäßig von uns 10.0 (msvcr100.dll) die Laufzeit ist nicht verfügbar unter Windows XP standardmäßig aktiviert. Sie müssen manuell bereitstellen, die C-runtime auf Ihrem Computer, um für Ihr Programm zu laufen.

    Sie Lesen möchten, können Sie auf die folgende MSDN-Artikel beschreibt die Probleme rund um die Bereitstellung von C-Anwendungen, die mit Visual Studio 2010

    Möglicherweise gibt es weitere 32 /64 Probleme bei der Arbeit, aber das scheint das primäre problem

  3. 1

    Den Antworten, die über die Laufzeit-Bibliothek korrekt sind. Eine weitere mögliche Lösung ist den link zu der statischen runtime-Bibliotheken statt, um den DLL-Versionen. Auf diese Weise können Sie erstellen Sie eine ausführbare Datei, die Sie ablegen können, auf jedem Rechner ohne zusätzliche deployment-Probleme.

    Es ist ein trade-off, sondern, ohne zu wissen, mehr über Ihre situation, es könnte eine überlegung Wert sein.

Kostenlose Online-Tests

Letzte Fragen

Tun ItemView löst Blase?

Ich habe eine CompositeView für eine Tabelle. Ich habe Trigger-set in der Kind-ItemView für jede Zeile... var TableRow = Marionette.ItemView.extend({ tagName:...

Wie kann ich untersuchen, WCF was 400 bad request über GET?

Die folgenden WCF-endpoint funktioniert gut mit dem WCF test client: AssetList ListFlaggedAssets(short processCode, string platform, string endpoint = "null", string portalId = "null", int...

Bei der Verwendung von UUIDs, sollte ich auch mit AUTO_INCREMENT?

Wir bauen eine neue web-app, die eine offline-iPad - /Android-app-version auf einer Reihe von lokalen Geräten, die Einsätze mit neuen Daten. Als solche benötigen...

Actionscript-Objekt, das verschiedene Eigenschaften

Wie kann ich die Anzahl der Eigenschaften in einer generischen Actionscript-Objekt? (Wie die Array-Länge) InformationsquelleAutor Fragsworth | 2011-01-15

Wie plot mehrere Graphen und nutzen Sie die Navigations-Taste im [matplotlib]

Die neueste version von matplotlib erstellt automatisch Navigations-buttons unter den graph. Aber die Beispiele, die ich finden alles im Internet zeigen, wie erstellen Sie...