none
Programm läuft nicht unter 64 Bit OS RRS feed

  • Frage

  • Hallo,

    mein aktuelles Programm läuft soweit ganz gut. Nun hatte ich heute die Möglichkeit das mal auf Windows 7 64 Bit auszuprobieren. Da lief es aber nicht. Wie bekomme ich das hin?


    Liebe Grüße Stefan
    • Verschoben Robert Breitenhofer Samstag, 18. September 2010 16:20 Visual Basic Express (aus:Visual Basic (ab Version 2002 / .NET))
    Montag, 13. September 2010 21:04

Antworten

  • Stefan,

    vorher muss evtl deine Express Edition noch 'getuned' werden:
    Aktivieren von erweiterten Buildkonfigurationen
    http://msdn.microsoft.com/de-de/library/ms165414.aspx

    • Als Antwort markiert Giftzwockel Samstag, 18. September 2010 14:20
    Montag, 13. September 2010 22:58
  • Hallo Stefan

    Eine Fehlerbeschreibung wie "Da lief es aber nicht" ist von einem Programmierer inakzeptabel.

    Als erster Schnelltest könnte man die Projekt-Einstellungen fix auf 32-Bit zwingen, also 'x86' unter:
    http://msdn.microsoft.com/de-de/library/5b4eyb0k.aspx

    Wenn es damit läuft, dann besteht irgendwo eine Plattform-Abhängigkeit, zB wegen DllImport/ComInterop oder anderen (Fremd-)Bibliotheken, die auf 32-Bit ausgelegt sind.
    • Als Antwort markiert Giftzwockel Samstag, 18. September 2010 14:20
    Montag, 13. September 2010 21:13
  • Hallo Stefan,

    Tatsächlich, in der englischen Version (Updated: September 2009) kann man es schon bei der ersten Notiz lesen: „The Visual Studio Express Editions, such as Visual C# Express Edition, do not support optimization for a specific CPU type. This is supported only in the full Visual Studio product.“ (Quelle: http://msdn.microsoft.com/en-us/library/5b4eyb0k(VS.90).aspx)

    In der Deutsche Lokalisierung desselben Artikels steht nicht diese Notiz (wurde ja in November 2007 Letzt Aktualisiert).

    Versuch bitte noch auch den folgenden Vorschlag:

    Changing the target cpu in VB express 2008

    Bin auch hartnäckig rund um dieses Problem deshalb bin ich noch nicht zu Bett gegangen …J

    Grüße,

    Robert

    • Als Antwort markiert Giftzwockel Samstag, 18. September 2010 14:20
    Freitag, 17. September 2010 23:27
  • Hallo Stefan,

    Nur gibt es, ungeachtet dessen, dass es die Einstellung geben muß, diese scheinbar nicht für mich L.

    Oder ich irre in den falschen Menüs rum.

    Ja, Du irrst in den falschen Menüs rum. Nachdem Du die erweiterte Build-Konfiguration aktiviert hast, findest Du im Menü "Erstellen" den Menüpunkt "Konfigurations-Manager". Dort kannst Du unter Plattform neue Projektplattformen anlegen. In der vbproj Projektdatei musst Du dazu nicht herumfuhrwerken. Das würde ich auch keinem empfehlen, wenn er sich nicht auskennt.

    Ich würde es sehr begrüßen, wenn Du als Anwender der Express Edition für zukünftige Fragen auch das passende Forum für Visual Basic Express nutzt. Das spart die ein oder andere Rückfrage.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    • Als Antwort markiert Giftzwockel Samstag, 18. September 2010 14:20
    Samstag, 18. September 2010 13:14

Alle Antworten

  • Hallo Stefan

    Eine Fehlerbeschreibung wie "Da lief es aber nicht" ist von einem Programmierer inakzeptabel.

    Als erster Schnelltest könnte man die Projekt-Einstellungen fix auf 32-Bit zwingen, also 'x86' unter:
    http://msdn.microsoft.com/de-de/library/5b4eyb0k.aspx

    Wenn es damit läuft, dann besteht irgendwo eine Plattform-Abhängigkeit, zB wegen DllImport/ComInterop oder anderen (Fremd-)Bibliotheken, die auf 32-Bit ausgelegt sind.
    • Als Antwort markiert Giftzwockel Samstag, 18. September 2010 14:20
    Montag, 13. September 2010 21:13
  • Hallo Thomas,

    zu viel des Lobes mit dem Programmierer. Ich versuche mich daran, würde mich aber nie als solchen bezeichnen oder mit Programmierern auf eine Stufe stellen. Aber egal, ich habe mich wohl wirklich sehr mager ausgedrückt.

    Also der SplashScreen wird noch gezeigt. Da ich u.A. noch mit einer Ini-Datei arbeite wird diese scheinbar schon nicht mehr eingelesen, denn Form1 wird schon nicht mehr dargestellt.

    Die Fehlermeldung habe ich leider nicht parat. Ich bin mal deinem Link gefolgt und scheitere an Punkt 4.

    1. Wählen Sie im Projektmappen-Explorer ein Projekt aus, und klicken Sie im Menü Projekt auf Eigenschaften.

    2. Klicken Sie auf die Registerkarte Kompilieren.

    3. Klicken Sie auf die Schaltfläche Erweiterte Kompilierungsoptionen, um das Dialogfeld Erweiterte Compilereinstellungen zu öffnen.

    4. Wählen Sie einen CPU-Typ in der Liste Ziel-CPU aus.Die Optionen lauten AnyCPU (Standard), x86, x64 und Itanium.Klicken Sie auf OK.

    denn ich finde dort keine Möglichkeit einen CPU-Typ auszuwählen. Ich arbeite mit VB 2008.
    Der Hinweis, den ich von Window 7 Home Premium (gibt es das?) bekomme ist nur, dass die Anwendung nicht gestartet werden könne und das Windows versuche, das zu reaprieren.

    Option Strict Off

    Option Explicit On

    Imports System

    Imports System.Text

    Imports System.IO

    Imports System.Runtime.InteropServices

    Imports System.Threading

    Imports System.Net

    Imports System.Net.Mail

    Imports System.Net.Mail.SmtpClient

    Imports System.Net.Mail.Attachment

    Imports Microsoft.Win32

     

    Gibt es so etwas wie:

    Imports Microsoft.Win64 oder

    Imports Microsoft.x86

     

     


    Liebe Grüße Stefan
    Montag, 13. September 2010 22:27
  • Stefan,

    vorher muss evtl deine Express Edition noch 'getuned' werden:
    Aktivieren von erweiterten Buildkonfigurationen
    http://msdn.microsoft.com/de-de/library/ms165414.aspx

    • Als Antwort markiert Giftzwockel Samstag, 18. September 2010 14:20
    Montag, 13. September 2010 22:58
  • Hallo Stefan,

    Also der SplashScreen wird noch gezeigt. Da ich u.A. noch
    mit einer Ini-Datei arbeite wird diese scheinbar schon nicht
    mehr eingelesen, denn Form1 wird schon nicht mehr dargestellt.

    Also gibt es offenbar bis dahin irgendwelchen Code, der nur
    unter einem 32-Bit System ablauffähig ist, resp. Code, der
    eine 32-Bit DLL, oder sonstige 32-Bit Abhängigkeiten aufruft.


    Die Fehlermeldung habe ich leider nicht parat.

    Das wäre aber der einzig sinnvolle Hebel, um an den
    aufgetretenen Fehler zu kommen.

    Ich bin mal deinem Link gefolgt und scheitere an Punkt 4.

    1.

    Wählen Sie im*Projektmappen-Explorer* ein Projekt aus,
    und klicken Sie im Menü*Projekt* auf *Eigenschaften*.
    2.

    Klicken Sie auf die Registerkarte*Kompilieren*.
    3.

    Klicken Sie auf die Schaltfläche*Erweiterte Kompilierungsoptionen*,
    um das Dialogfeld*Erweiterte Compilereinstellungen* zu öffnen.
    4.

    Wählen Sie einen CPU-Typ in der Liste*Ziel-CPU* aus.Die
    Optionen lauten*AnyCPU* (Standard), *x86*,*x64* und *Itanium*.
    Klicken Sie auf*OK*.

    denn ich finde dort keine Möglichkeit einen CPU-Typ auszuwählen.

    Solltest Du aber, wenn Du nicht mit einer Express-Edition von VB.net
    arbeitest.
    Im Fenster "Erweiterte Compilereinstellungen" sind in der zweiten
    ComboBox von unten die möglichen CPU Varianten zur Auswahl
    aufgelistet.

    Ich arbeite mit VB 2008.

    Welches VB2008?
    Express, Professional, Team System usw.?

    Der Hinweis, den ich von Window 7 Home Premium (gibt es das?)
    bekomme ist nur, dass die Anwendung nicht gestartet werden könne
    und das Windows versuche, das zu reaprieren.

    OptionStrict Off

    Warum schaltest Du Option Strict aus?
    Das solltest Du besser einschalten.

    Welche Verweise sind im Projektexplorer unter Verweise aufgeführt?

    Gruß aus St.Georgen
    Peter Götz
    www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

    Dienstag, 14. September 2010 06:24
  • Hallo Thomas,

    das war schon mal der erste Punkt. Tuning erfolgreich verlaufen. Jetzt habe ich tatsächlich auch die Aufklappliste mit der Beschriftung "Plattform". Vorher war die nicht zu sehen, weswegen den zweite Auklappliste von der hier die Rede war, eine völlig andere Einstellungs behandelte.

    Danke.


    Liebe Grüße Stefan
    Dienstag, 14. September 2010 17:14
  • Hallo Peter,

     

    sorry, ich habe Visual Basic 2008 Express.

     

     

     

    Im Fenster “Erweiterete Compilereinstellungen habe ich von oben nach unten folgende Controls:

     

    Links oben:

    Checkbox „Überprüfungen auf Ganzzahlüberlauf entfernen“

    Rechts daneben:
    Checkbox „Optimirungen aktivieren“

     

    Darunter inaktive TextBox:

    DLL-Basisadresse              &H11000000

     

    Darunter Aufklapplistenfeld:
    Debuginfo generieren         Ausgewählt  =  None

     

    Unter Kompilierungskonstanen sind:

    Checkbox: DEBUG-Konstante Definieren nicht ausgewählt

    Rechts daneben Trace-Konstante definieren =  ausgewählt

     

    Benutzerdefinierte Konstante:

    Win32 = True

    Beispiel: Name1 =“Wert1“, Name2 =“Wert2“, Name3 =“Wert3“

     

    Serialisierungsassemblys generieren

    Automatisch

     

    Zielframework (alle Konfigurationen):

    .Net Framework 3.5

     

    Darunter Checkbox „Reine Client-Frameworkteilmenge“ = nicht ausgewählt.

     

    Muss ich noch irgenwo „tunen“?

     

    Das mit Option Strict aus habe ich mal irgenwann als Tipp bekommen, als ich mich wegen einer Fehlermeldung wie dieser erkundigt habe:

     

    Fehler 37 "Option Strict On" lässt Operanden des Typs "Object" für den =-Operator nicht zu. Verwenden Sie den Is-Operator, wenn Sie die Objektidentität testen möchten. J:\Stefan\Privat\Programmieren\Visual Basic\scan4office\Form1.vb 5596 16 Project1

     

    Nachdem mir mein Ratgeber acuh nicht sagen konnte, was ich anders machen soll um solche Fehlermeldungen zu eliminieren, das Programm aber mit Option Strict Off nicht meckert und dennoch läuft, schien mir das akzeptabel.

     

     

     


    Liebe Grüße Stefan
    Dienstag, 14. September 2010 17:38
  • Hallo Stefan,

    Muss ich noch irgenwo "tunen"?

    Musst Du, aber hast Du inzwischen ja schon wie in
    http://msdn.microsoft.com/de-de/library/ms165414.aspx
    beschrieben.

    Das mit Option Strict aus habe ich mal irgenwann als Tipp
    bekommen, als ich mich wegen einer Fehlermeldung wie
    dieser erkundigt habe:

    Fehler 37 "Option Strict On" lässt Operanden des Typs
    "Object" für den =-Operator nicht zu. Verwenden Sie den
     Is-Operator, wenn Sie die Objektidentität testen möchten.
    J:\Stefan\Privat\Programmieren\Visual Basic\scan4office\Form1.vb 5596 16 Project1

    Wie die Fehlermeldung schon sagt, ist ein Vergleich von
    Objekten

        if Objekt1 = Objekt2 then ...

    nicht zulässig, es muss heissen

        If Objekt1 is Objekt2 then
            ' Objekt1 und Objekt2 verweisen auf
            ' die selbe Instanz des Objektes.
        End if

    Mit

        If Objekt1.Equals(Objekt2) then
            ' Objekt1 und Objekt2 sind gleich
        End

    kann man zwei Instanzen eines Objekttyps vergleichen.

    Nachdem mir mein Ratgeber acuh nicht sagen konnte,
    was ich anders machen soll um solche Fehlermeldungen
     zu eliminieren, das Programm aber mitOption Strict Off
    nicht meckert und dennoch läuft, schien mir das akzeptabel.

    Option Explicit und Option Strict sollten immer eingeschaltet sein
    nur so ist sichergestellt, dass VB.net nicht implizit irgendwelche
    Variablen selbst deklariert bzw. unpassende Datentypen implizit
    umwandelt und dabei unerwünschte Ergebnisse entstehen.

    Gruß aus St.Georgen
    Peter Götz
    www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

    Mittwoch, 15. September 2010 06:11
  • Hallo Peter,

    ok, das glaube ich verstanden zu haben. Bei meiner 64 Bit Anwendung hilft mir das aber nicht weiter?

     


    Liebe Grüße Stefan
    Freitag, 17. September 2010 12:51
  • Hallo Stefan,

    ok, das glaube ich verstanden zu haben.

    Was hast Du verstanden?
    Die Sache mit den Objektvergleichen?

    Bei meiner 64 Bit Anwendung hilft mir das aber nicht weiter?

    Was hilft Dir bei welcher 64 Bit Anwendung nicht weiter?
    Offenbar hat Deine Anwendung doch irgendwelche 32-Bit-
    Abhängigkeiten und deshalb solltest Du sie nicht für "Any CPU"
    sondern eben explizit für "X86 CPU" kompilieren. Die
    Anwendung läuft dann auch unter Win7 64Bit im 32-Bit-Modus.

    Gruß aus St.Georgen
    Peter Götz
    www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

    Freitag, 17. September 2010 16:23
  • Hallo Robert und Peter,

     

    danke für die Links und Tipps. Einen Teil davon hat Thomas ja auch schon geschrieben und ich habe das auch alles beherzigt.

    Nur gibt es, ungeachtet dessen, dass es die Einstellung geben muß, diese scheinbar nicht für mich L.

    Oder ich irre in den falschen Menüs rum. Um das Problem sichtbar zu machen habe ich das unter http://www.giftzwockel.de/VB64Bit.htm mal mit Screenshots dargestellt.

    Im ersten ist hoffentlich ersichtlich, dass unter Platform nur Aktiv (Any CPU) in der Liste steht.

    Ebenfalls der Erste zeigt, dass ich wie beschrieben über den Button „Erweiterte Kompilierungsoptionen“ gehe (roter Rahmen).

    Der Zweite zeigt, dass ich hoffentlich im richtigen Dialog bin. Nur dort gibt es nirgends ein Auswahllistenfeld in dem ich den CPU-Typ auswählen kann.

     

    Sorry, dass ich so hartnäckig oder unbeholfen bin.

     


    Liebe Grüße Stefan
    Freitag, 17. September 2010 21:47
  • Hallo Stefan,

    Tatsächlich, in der englischen Version (Updated: September 2009) kann man es schon bei der ersten Notiz lesen: „The Visual Studio Express Editions, such as Visual C# Express Edition, do not support optimization for a specific CPU type. This is supported only in the full Visual Studio product.“ (Quelle: http://msdn.microsoft.com/en-us/library/5b4eyb0k(VS.90).aspx)

    In der Deutsche Lokalisierung desselben Artikels steht nicht diese Notiz (wurde ja in November 2007 Letzt Aktualisiert).

    Versuch bitte noch auch den folgenden Vorschlag:

    Changing the target cpu in VB express 2008

    Bin auch hartnäckig rund um dieses Problem deshalb bin ich noch nicht zu Bett gegangen …J

    Grüße,

    Robert

    • Als Antwort markiert Giftzwockel Samstag, 18. September 2010 14:20
    Freitag, 17. September 2010 23:27
  • Hallo Stefan,

    Nur gibt es, ungeachtet dessen, dass es die Einstellung geben muß, diese scheinbar nicht für mich L.

    Oder ich irre in den falschen Menüs rum.

    Ja, Du irrst in den falschen Menüs rum. Nachdem Du die erweiterte Build-Konfiguration aktiviert hast, findest Du im Menü "Erstellen" den Menüpunkt "Konfigurations-Manager". Dort kannst Du unter Plattform neue Projektplattformen anlegen. In der vbproj Projektdatei musst Du dazu nicht herumfuhrwerken. Das würde ich auch keinem empfehlen, wenn er sich nicht auskennt.

    Ich würde es sehr begrüßen, wenn Du als Anwender der Express Edition für zukünftige Fragen auch das passende Forum für Visual Basic Express nutzt. Das spart die ein oder andere Rückfrage.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    • Als Antwort markiert Giftzwockel Samstag, 18. September 2010 14:20
    Samstag, 18. September 2010 13:14
  • Hallo Robert,

    die Änderungen habe ich vorgenommen. Die Menüs selbst haben sich dadurch nicht geändert. Vermutlich liegt das wohl daran das ich VisualBasic Express verwende wie Thomas feststellt. Das habe ich erst auch Nachfrage  am Dienstag, 14. September 2010 17:38 Peter beantwortet.
    Ich werde das vielleicht besser in die Signatur übernehmen um den Helfern nicht unnötige Fallstricke zu legen. An dieser Stelle bitte ich alle, die sich so intensiv mit meinem Problem befasst haben hierfür um Entschuldigung.
    Der Hinweis von Thorsten hat mich wohl auf die richtige Spur gebracht. Ich bekomme da noch eine Fehlermeldung, mit der ich mich aber erts mal um Rahmen eines Miniprogramm und nicht bei meinem aktuellen Projekt befassen werde (auch wenn ich Sicherungskopien habe).


    Liebe Grüße Stefan
    Samstag, 18. September 2010 14:10
  • Hallo Thorsten,

     

    bitte entschuldige, wenn ich hier ins falsche Forum gerutscht bin und danke für deine Antwort.

    Ich habe jetzt meine Signatur geändert damit jeder gleich weiß, dass ich Visual Basic 2008 Express verwende.

    Ohne die Sache zu beschönigen hat das natürlich auch andere Helfer interessiert und ging irgendwo aus dem Verlauf hervor.
    Dennoch will ich versuchen, es künftig besser zu machen.


    Liebe Grüße Stefan ----------------------------------------- Ich verwende Visual Basic 2008 Express
    Samstag, 18. September 2010 14:19