Ich kann Go-Programme nicht mehr ausführen

8

Das ist das seltsamste Problem, das ich jemals erlebt habe. Ich habe meine Go-Entwicklungsumgebung auf einer virtuellen Windows 2008 R2-Maschine eingerichtet. Ich starte es nicht einmal neu und führe Windows Update nicht aus.

Heute habe ich festgestellt, dass ich Go-Programme nicht mehr ausführen kann. Ich kann Komponententests mit 'go test' erfolgreich erstellen und ausführen. Wenn Sie jedoch ein kompiliertes Go-Programm ausführen (sogar Hallo Welt), wird ein Popup-Fenster mit dem Titel "Nicht unterstützte 16-Bit-Anwendung" angezeigt. Die Fehlermeldung lautet wie folgt:

  

Die Version dieser Datei ist nicht mit der Windows-Version kompatibel   du rennst. Überprüfen Sie die Systeminformationen Ihres Computers, um zu sehen   ob Sie eine x86 (32-Bit) oder x64 (64-Bit) Version des   Programm, und wenden Sie sich dann an den Software-Publisher.

Das Ergebnis ist das gleiche, egal welche Version von Go ich verwende (x86 / x64). Beachten Sie auch, dass ich keine IDE verwende. Ich rufe go.exe auf, um von der Befehlszeile zu bauen / zu testen.

Ich kann mich damit nicht abfinden, da das Ausführen von "go test" gut funktioniert.

Irgendwelche Gedanken?

BEARBEITEN:

Hier ist die Konsolenausgabe, wenn ich das Programm erstelle und ausführe:

Ausgabe erstellen / ausführen

Interessanterweise schlägt dumpbin vor, dass etwas mit der ausführbaren Datei nicht stimmt

%Vor%

Und hier ist der vollständige Quellcode:

%Vor%

EDIT2:

Ich habe Go zweimal ohne Effekt neu installiert.

    
Alex G. 15.11.2014, 23:00
quelle

1 Antwort

11
  

Die Go-Programmiersprachenspezifikation

     

Programmausführung

     

Ein vollständiges Programm wird erstellt, indem ein einzelnes, nicht importiertes Paket verknüpft wird   nannte das Hauptpaket mit allen Paketen, die es importiert,   transitiv. Das Hauptpaket muss den Paketnamen main haben und deklarieren   eine Funktion, die keine Argumente annimmt und keinen Wert zurückgibt.

%Vor%      

Die Programmausführung beginnt mit der Initialisierung des Hauptpakets und dann   Aufruf der Funktion main. Wenn dieser Funktionsaufruf zurückkehrt, wird der   Programm beendet. Es wartet nicht auf andere (Nicht-Haupt) Göroutinen   vervollständigen.

Verwenden Sie package main , nicht package playground . Zum Beispiel

playground.go :

%Vor%

playground/another.go :

%Vor%

Ausgabe:

%Vor%     
peterSO 16.11.2014, 00:27
quelle

Tags und Links