Wo fängt man mit den zukünftigen 64Bit an?



  • Hallo,

    ich denke drüber nach, das .NET evtl. eine gute Alternative für das 64/32 Bit OS Problem darstellt. Zwar hat man den 32bit Kombatibilitäts modus, jedoch arbeiten einige 32bit Befehle nicht mit anderen 64bit Programmen zusammen. Wenn ich jetzt eine Applikation auf meinem 32Bit Computer in MFC oder Co. schreibe, dann muss ich eine zweite Applikation in einer 64bit Variante compilieren und mitgeben. Bei .Net sollte dies dann eigentlich mit "ANY CPU" Modus geklärt sein.

    Insbesondere frage ich mich allerdings wie es mit einem invoke eines WINAPI Befehles aussieht? wird hier je nach OS der jeweilige Befehl in 64bit oder 32bit Variante verwendet? Das stelle ich mir wegen der Übergabeparameter komisch vor.

    Zudem Frage ich mich ob "ANY CPU" evtl. mehr Codeanteil mitführt?
    Wo findet man zu diesem Compilermodus mehr Informationen?

    Grüße
    TheNoName



  • Also wir haben mit unserer 32-Bit-Anwendung unter x64 gar keine Probleme (wir liefern auch mit XP x64 aus und nutzen das LAA-Flag). Trotzdem ein interessantes Thema. Spontan habe ich dazu Folgendes gefunden:

    http://www.juergen-bayer.net/codebook/archive/2008/10/13/64-bit-anwendungen-entwickeln.aspx



  • Also konkret problematisch wird es beim Verwenden von WINAPI und Tastatur Hooks oder kleinen Programmen die D3D hooken um irgendwas im Overlay darzustellen.
    Ich denke da gibt es noch andere Beispiele.
    Kleiner Programme werden einfach nicht mit irgendwelchen Imports arbeiten.

    Ich möchte einfach, das mein Programm je nach OS auch voll im jeweiligen Modus arbeitet, da bin ich mit "Any CPU" schonmal richtig. Ich habe gelesen, das ein Laden von 32bit DLL Dateien hier schonmal nicht geht wenn auf einem 64bit System ein 64bit Framework installiert ist. Aber was ist hier mit der WINAPI? Ist diese dann als 64bit verfügbar? Ich denke schon!
    Also würde die 64bit WINAPI verwendet?
    Bei Hooks habe ich zudem gelesen, das zwei Hooks auf dieselbe Funktion (einmal 32bit einmal 64bit) zu dem Ergebnis führt, das nur der letzte Hook funktioniert.
    Das habe ich dann nicht verstanden, da man eigentlich nur an einen Hook kommt, nämlich den mit 64bit??

    Achja, 32bit ActiveX und COM Objekte sind ja merkwürdigerweise voll intercompatibel und können von 64bit Prozessen verwendet werden? Laufen diese dann im Kombatibilitätsmodus entgegen dem 64bit Anwendungscode?



  • Biete das Programm einfach in mehreren Varianten an, wenn du gut bist kannst du es wie Microsoft machen und dabei noch kräftig absahnen.



  • Build-Tool schrieb:

    Biete das Programm einfach in mehreren Varianten an, wenn du gut bist kannst du es wie Microsoft machen und dabei noch kräftig absahnen.

    Beispiel? Windows kannst du jedenfalls nicht meinen, ich kann mit meiner 32-Bit-Vista-Version kostenlos (wahrscheinlich gegen Porto) auch die 64-Bit-Variante ordern (das Zauberwort heißt Anytime-Upgrade, glaube ich).



  • _matze schrieb:

    Build-Tool schrieb:

    Biete das Programm einfach in mehreren Varianten an, wenn du gut bist kannst du es wie Microsoft machen und dabei noch kräftig absahnen.

    Beispiel? Windows kannst du jedenfalls nicht meinen, ich kann mit meiner 32-Bit-Vista-Version kostenlos (wahrscheinlich gegen Porto) auch die 64-Bit-Variante ordern (das Zauberwort heißt Anytime-Upgrade, glaube ich).

    Ist das wirklich so *interessiert kuck*? Ich hatte das immer so verstanden, dass man für die andere Version erneut zur Kasse gebeten wird.

    Stefan.



  • Tja ich bin nicht klug und möchte zudem ältere Programme mit unterstützen.
    D.h. ich habe z.B. ein 64bit Programm geschrieben, welches ein D3D Overlay erzeugt und nun kommt die Spieleindustrie und bringt weiterhin 32bit Software aber ich kann da kein Overlay drüber setzen weil ich keinen Zugriff mehr auf 32bit habe. (indirekt proportional zu FRAPS)

    Ich suche immer noch im Netz eine Aussage, das z.B. registrierte COM Objekte eine gemeinsame Schnittstelle aufweisen. Ich habe zwar Berichte darüber das 32bit COM Objekte unter 64bit Programmen ansprechbar sind, jedoch keine Ahnung ob auch 64bit COM Objekte mit einem "alten" 32bit Programm ansprechbar sind.

    Super wird es übrigends beim 64bit Firefox mit einem UNI-Plugin!
    Der IE verwendet glaub ich nur COM Objekte und ist da besser unterwegs.



  • DStefan schrieb:

    Ist das wirklich so *interessiert kuck*? Ich hatte das immer so verstanden, dass man für die andere Version erneut zur Kasse gebeten wird.

    Soweit ich mich erinnere, hatten die das ursprünglich nur für Vista Ultimate geplant (da sind ja beide Versionen auf der DVD), sich aber nachträglich umentschieden. Jedenfalls kannste dir wohl für 9.95 eine 64-bittige DVD bestellen.

    Hab auf die Schnelle keinen vernünftigen Link gefunden, aber hier hat's einer gemacht: http://www.vistaheads.com/forums/microsoft-public-windows-vista-installation-setup/56726-vista-home-premium-32-bit-oem-anytime-upgrade-64-bit.html

    EDIT: Ich glaube, hier wäre man mit dem Anliegen richtig:

    http://www.microsoft.com/windowsvista/1031/ordermedia/de-de/default.mspx
    (bin nur nicht ganz sicher, ob es da keine Probleme mit SB-Versionen gibt...)



  • thenoname schrieb:

    Ich suche immer noch im Netz eine Aussage, das z.B. registrierte COM Objekte eine gemeinsame Schnittstelle aufweisen. Ich habe zwar Berichte darüber das 32bit COM Objekte unter 64bit Programmen ansprechbar sind, jedoch keine Ahnung ob auch 64bit COM Objekte mit einem "alten" 32bit Programm ansprechbar sind.

    Das gilt nur für COM-Objekte, die out-of-process laufen. Dieses nimmt dann die Aufrufe per RPC entgegen, erledigt seine Aufgabe und gibt das Ergebnis wieder über RPC zurück. Das Marschalling funktioniert für Standardtypen prolemlos. Diese Technik sollte in beide Richtungen funktionieren, ich habe es allerdings nur in der ersten im Einsatz.


Log in to reply