2010-08-28 12 views
11

zainstalowałem DMD (2.0?) Za pomocą instalatora systemu Windows i próbuję skompilować następujący program:D języka programowania: Moduł stdio nie można odczytać pliku 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; 
} 

Ale pojawia się następujący kompilatora błąd:

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

Czy istnieją pewne ścieżki, które muszę podać, aby biblioteka standardowa działała?

+0

proszę pisać wyjście z kompilacji z DMD -V' – Bernard

+0

'C:.. \ nadzieja \ D> tcpechoserver.d DMD - v pars tcpechoserver importall tcpechoserver obiekt importu (C: \ D \ bin \ .. \ import \ object.di) import std.stdio (std \ stdio.d) tcpechoserver.d (3): Błąd: moduł stdio nie może odczytać pliku 'std \ stdio.d ' – lowerkey

Odpowiedz

5

Sprawdź plik ~\windows\bin\sc.ini w katalogu instalacyjnym dmd. Zawiera ukryte argumenty wiersza polecenia dla DMD, który powinien wyglądać jak ten dla DMD 2,048:

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

i

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

Jeśli są ok, i nie działa, instalacja jest prawdopodobnie złamane . Polecam, aby po prostu pobrać skompresowaną wersję kompilatora i rozpakować ją na swojej instalacji.

8

Gdy pojawi się taki błąd, oznacza to, że DMD nie może znaleźć pliku importu. Jeśli masz import foo.bar.xyz, to spodziewa się, że znajdzie numer xyz.d w jakimś katalogu foo\bar\.

Wyszukuje katalogu we wszystkich standardowych ścieżek importu, jak również w bieżącym katalogu (na przykład, jeśli dodano katalog std obok tcpechoserver.d z stdio.d w nim, wtedy byłoby użyć tego). Oczywiście, nie chcesz tego - chcesz standardu stdio.d.

Można znaleźć co katalogi wygląda go otwierając plik

C:\D\dmd2\windows\bin\sc.ini (zakładając został zainstalowany w domyślnym katalogu).

Wewnątrz, że powinna ona zawierać linię:

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

który mówi kompilatorowi, aby szukać tych ścieżek przy poszukiwaniu katalogów importowych. Jeśli nie ma tej linii z jakiegokolwiek powodu (lub jeśli linia jest inna), a następnie spróbuj dodać tę linię do sc.ini (gdziekolwiek pod nagłówkiem [Environment] powinien robić.

zapewniają również, że katalog dmd2 zawiera plik \src\phobos\std\stdio.d.

Jeśli oba te nie działają, to polecam ponownej instalacji od podstaw