2010-08-28 2 views
11

Ich installierte dmd (2.0?) mit dem Windows-Installer und versuche das folgende Programm zu kompilieren:D Programmiersprache: Modul stdio kann die Datei std stdio.d nicht lesen

module tcpechoserver; 

import std.stdio; 

const int MAXPENDING = 5; 

int main(char[][] argv) 
{ 
    if(argv.length != 2){ 
     writef("Usage: %s <port>", argv[0]); 
    } 

    return 0; 
} 

Aber ich bekomme den folgenden Compilerfehler:

Error: module stdio cannot read file 'std\stdio.d' 

Gibt es einige Wege, die ich haben muss angeben, um die Standardbibliothek zum Laufen zu bringen?

+0

Bitte senden Sie die Ausgabe der Kompilierung mit 'DMD -V' – Bernard

+0

C:.. \ Hoffnung \ D> DMD tcpechoserver.d - v parse tcpechoserver importall tcpechoserver Importobjekt (C: \ D \ bin \ .. \ import \ object.di) importieren std.stdio (std \ stdio.d) tcpechoserverd.d (3): Fehler: Modul stdio kann Datei 'std \ nicht lesen stdio.d ' – lowerkey

Antwort

5

Sehen Sie sich die Datei ~\windows\bin\sc.ini in Ihrem dmd-Installationsverzeichnis an. Es enthält implizite Befehlszeilenargumente für DMD, die als dies für DMD 2,048 aussehen sollte:

LIB="%@P%\..\lib";\dm\lib

und

DFLAGS="-I%@P%\..\..\src\phobos" "-I%@P%\..\..\src\druntime\import"

Wenn sie in Ordnung sind, und es nicht funktioniert, ist die Installation wahrscheinlich gebrochen . Ich empfehle Ihnen, die gezippte Version des Compilers einfach herunterzuladen und über Ihre Installation zu entpacken.

8

Wenn Sie solche Fehler erhalten, bedeutet dies, dass DMD die Importdatei nicht finden kann. Wenn Sie import foo.bar.xyz, dann erwartet es ein xyz.d in einem Verzeichnis foo\bar\ zu finden.

Es sucht für dieses Verzeichnis in allen pauschalen Einfuhrweg, sowie das aktuelle Verzeichnis (zum Beispiel, wenn Sie ein Verzeichnis std neben Ihrem tcpechoserver.d mit einem stdio.d darin gegeben, dann wäre es, dass verwenden). Natürlich wollen Sie das nicht - Sie wollen den Standard stdio.d.

können Sie finden, welche Verzeichnisse es durch Öffnen der Datei

C:\D\dmd2\windows\bin\sc.ini (vorausgesetzt, Sie in das Standardverzeichnis installiert ist) aussieht.

Innen, dass, sollte es die Zeile enthält:

DFLAGS="-I%@P%\..\..\src\phobos" "-I%@P%\..\..\src\druntime\import"

, die die Compiler sagen diese Pfade zu suchen, wenn für den Import Verzeichnis suchen. Wenn Sie nicht über diese Linie aus irgendeinem Grunde haben (oder wenn die Leitung unterschiedlich ist), dann versuchen Sie diese Zeile in sc.ini Zugabe (irgendwo unter dem [Environment] Header tun soll.

außerdem sicher, dass das Verzeichnis dmd2 eine \src\phobos\std\stdio.d-Datei enthält.

Wenn beide diese nicht funktionieren, dann würde ich empfehlen, von Grund auf neu zu installieren

Verwandte Themen