2010-08-28 12 views
11

ho installato DMD (2.0?) utilizzando il programma di installazione di Windows e sto cercando di compilare il seguente programma:D: modulo stdio non è in grado di leggere il file std stdio.d

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; 
} 

Ma io ottenere il seguente compilatore errore:

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

Ci sono alcuni percorsi che devo specificare per far funzionare la libreria standard?

+0

si prega di inviare l'output di compilazione con '-V' DMD – Bernard

+0

C:.. \ speranza \ D> DMD tcpechoserver.d - v parse tcpechoserver importall tcpechoserver import object (C: \ D \ bin \ .. \ import \ object.di) import std.stdio (std \ stdio.d) tcpechoserver.d (3): Errore: il modulo stdio non può leggere il file 'std \ stdio.d' – lowerkey

risposta

5

Guarda il file ~\windows\bin\sc.ini nella directory di installazione di dmd. Esso contiene gli argomenti della riga di comando impliciti per la DMD, che dovrebbe apparire come questo per DMD 2.048:

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

e

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

Se sono ok, e non ha opere, l'installazione è probabilmente rotta . Vi consiglio di scaricare semplicemente la versione compressa del compilatore e decomprimerla durante l'installazione.

8

Quando si ricevono errori di questo tipo, significa che DMD non riesce a trovare il file di importazione. Se si import foo.bar.xyz, quindi si aspetta di trovare un xyz.d in qualche directory foo\bar\.

Si cerca per questa directory in tutte le sue vie forfettari all'importazione, così come la directory corrente (ad esempio, se si aggiunge una directory std accanto al tuo tcpechoserver.d con un stdio.d in esso, allora sarebbe utilizzare tale). Certo, non lo vuoi - vuoi lo standard stdio.d.

È possibile trovare ciò che le directory che sembra che aprendo il file

C:\D\dmd2\windows\bin\sc.ini (supponendo che è stato installato nella directory predefinita).

suo interno che, dovrebbe contenere la riga:

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

che si dice al compilatore di cercare quei percorsi quando alla ricerca di directory di importazione. Se non si dispone di quella linea per qualsiasi motivo (o se la linea è diversa), allora provate ad aggiungere questa linea in sc.ini (ovunque sotto l'intestazione [Environment] dovrebbe fare.

Assicurarsi inoltre che la directory contiene un file dmd2\src\phobos\std\stdio.d.

Se entrambe queste non funzionano, allora vi consiglio di reinstallare da zero

Problemi correlati