Benutzer mit den meisten Antworten
Konflikt zwischen Prozessorarchitektur

Frage
-
Hallo zusammen,
Ich arbeite seit einer Weile mit dem neuen VS 2012 (Proffesional Edition). Und nun hole ich so langsam ein Projekt nach dem anderen rüber(von 2010 zu 2012). Nun bekomme ich bei einen meiner Projekte folgende Warnmeldung :
Warnung 1 Konflikt zwischen Prozessorarchitektur des Projekts "MSIL", das erstellt wird, und der Prozessorarchitektur des Verweises, "Kopierer", "x86". Dieser Konflikt kann zu Laufzeitfehlern führen. Ändern Sie ggf. mithilfe des Konfigurations-Managers die als Ziel angegebene Prozessorarchitektur Ihres Projekts so, dass die Prozessorarchitekturen zwischen Ihrem Projekt und den Verweisen ausgerichtet werden, oder wählen Sie eine Abhängigkeit von Verweisen mit einer Prozessorarchitektur, die der als Ziel angegebene Prozessorarchitektur Ihres Projekts entspricht.
Zu diesem Project : Es ist ein Haupprojekt mit zwei Unterprojekten ( eine Testumgebung und ein Projekt Namens Kopierer ). Kann mir einer Erklären (Für Neulinge) Was VS da von mir will ?
Habe im Konfiguartionsmanager geschaut und da gibt es wirklich unterschiedliche Eintragungen bei der Spalte Plattform (Any CPU und x86). ABer leider bekomme ich diese Einstellungen nicht verändert.
Danke für die Hilfe
Daniel
Antworten
-
Ach so: Die Lösung ist natürlich, dass Du die EXE anstatt mit "AnyCPU" mit "x86" übersetzt.
Alternativ natürlich dass Du die DLL als "AnyCPU" übersetzt; dies wird aber oft nicht gehen, da es oft von native x86-DLLs abhängig ist.Alternativ kannst Du natürlich auch zwei Varianten der DLL erzeugen x86 und x64... das erfordert aber etwas geschickt beim korrekten laden der DLLs...
Jochen Kalmbach (MVP VC++)- Als Antwort vorgeschlagen Stefan FalzModerator Dienstag, 4. Dezember 2012 19:34
- Als Antwort markiert Daniel, Donnerstag, 6. Dezember 2012 17:05
-
Hallo Daniel,
x86 Anwendungen laufen sowohl auf 32- sowie auf 64-Bit Systemen. Leidglich x64 Anwendungen laufen nur auf 64-Bit Systemen.
Umstellen kannst Du das in den Projekteigenschaften.
Projekt
-> rechte Maustaste
-> Projekteigenschaften
-> Reiter "Kompilieren"
-> Button "Erweiterte Kompilierungsoptionen"
-> ...Je nach VS Version und verwendeter Programmiersprache kann der Pfad ein wenig anders aussehen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Daniel, Sonntag, 9. Dezember 2012 14:57
Alle Antworten
-
Du hast hier eine EXE, welche mit "AnyCPU" übersetzt ist. Dies bedeutet, dass es auf x86 Systemen als "x86" ausgeführt wird und auf x64-Systemen als "x64".
Gleichzeitig hast Du aber ein Verweise, welcher als "x86" übersetzt wird. Wird nun Deine EXE als x64 ausgeführt, so kann diese keine x86-Komponenten laden; somit geht Dein Programm auf x64 Systemen nicht.
Jochen Kalmbach (MVP VC++)- Als Antwort vorgeschlagen Stefan FalzModerator Dienstag, 4. Dezember 2012 19:34
-
Ach so: Die Lösung ist natürlich, dass Du die EXE anstatt mit "AnyCPU" mit "x86" übersetzt.
Alternativ natürlich dass Du die DLL als "AnyCPU" übersetzt; dies wird aber oft nicht gehen, da es oft von native x86-DLLs abhängig ist.Alternativ kannst Du natürlich auch zwei Varianten der DLL erzeugen x86 und x64... das erfordert aber etwas geschickt beim korrekten laden der DLLs...
Jochen Kalmbach (MVP VC++)- Als Antwort vorgeschlagen Stefan FalzModerator Dienstag, 4. Dezember 2012 19:34
- Als Antwort markiert Daniel, Donnerstag, 6. Dezember 2012 17:05
-
-
Hallo Daniel,
x86 Anwendungen laufen sowohl auf 32- sowie auf 64-Bit Systemen. Leidglich x64 Anwendungen laufen nur auf 64-Bit Systemen.
Umstellen kannst Du das in den Projekteigenschaften.
Projekt
-> rechte Maustaste
-> Projekteigenschaften
-> Reiter "Kompilieren"
-> Button "Erweiterte Kompilierungsoptionen"
-> ...Je nach VS Version und verwendeter Programmiersprache kann der Pfad ein wenig anders aussehen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Daniel, Sonntag, 9. Dezember 2012 14:57
-
Hallo,
die Prozessarchitektur kannst du in den Projekteigenschaften einstellen
VB.NET: Kompilieren > Ziel-CPU
C#: Erstellen > ZielplattformWie Jochen bereits sagte, müssen beide Projekte auf der selben "Plattform" laufen.
Wenn du eine x86 Assembly erstellst, so funktioniert Sie problemlos auf einem x64 Windows. x86 Prozesse werden im Taskmanager aber gekennzeichnet
x64 Assemblys können aber x86 Assemblys laden, falls du von einer Thirdparty x86 DLL abhängig bist die x86 als Plattform benötigen.
Koopakiller [kuːpakɪllɐ] http://koopakiller.ko.ohost.de/
- Bearbeitet Tom Lambert (Koopakiller)Moderator Dienstag, 4. Dezember 2012 19:40