2010-08-28 4 views
11

J'ai installé DMD (2.0?) En utilisant les fenêtres d'installation et essaie de compiler le programme suivant:langage de programmation D: Module stdio ne peut pas lire le fichier 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; 
} 

Mais je reçois le compilateur suivant erreur:

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

Y a-t-il des chemins que je dois spécifier pour que la bibliothèque standard fonctionne?

+0

S'il vous plaît poster le résultat de la compilation avec 'DMD -v' – Bernard

+0

C:.. \ 'espoir \ D> DMD tcpechoserver.d - v parse tcpechoserver importall tcpechoserver import d'un objet (C: \ D \ bin \ .. \ import \ objet.di) import std.stdio (std \ stdio.d) tcpechoserver.d (3): Erreur: le module stdio ne peut pas lire le fichier 'std \ stdio.d ' – lowerkey

Répondre

5

Examinez le fichier ~\windows\bin\sc.ini dans le répertoire d'installation de votre dmd. Il contient des arguments de ligne de commande implicite pour DMD, qui devrait ressembler à celui-ci pour DMD 2,048:

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

et

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

S'ils sont ok, et il ne fonctionne, votre installation est probablement cassé . Je vous recommande de simplement télécharger la version compressée du compilateur et de le décompresser sur votre installation.

8

Lorsque vous obtenez des erreurs de ce type, cela signifie que DMD ne trouve pas le fichier d'importation. Si vous import foo.bar.xyz, alors il s'attend à trouver un xyz.d dans un répertoire foo\bar\.

Il recherche ce répertoire dans tous ses chemins à l'importation, ainsi que le répertoire courant (par exemple, si vous avez ajouté un répertoire std à côté de votre tcpechoserver.d avec un stdio.d en elle, il serait alors l'utiliser). Bien sûr, vous ne voulez pas cela - vous voulez la norme stdio.d.

Vous pouvez trouver quels répertoires il semble en ouvrant le fichier

C:\D\dmd2\windows\bin\sc.ini (en supposant que vous installé dans le répertoire par défaut).

intérieur qui, il doit contenir la ligne:

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

qui est dit au compilateur de rechercher les chemins lors de la recherche pour les répertoires d'importation. Si vous ne disposez pas de cette ligne pour une raison quelconque (ou si la ligne est différente) puis essayez d'ajouter cette ligne dans sc.ini (partout sous l'en-tête [Environment] devrait faire.

Vérifiez également que le répertoire dmd2 contient un fichier \src\phobos\std\stdio.d.

Si ces deux ne fonctionnent pas, alors je vous recommande de réinstaller à partir de zéro

Questions connexes