Язык программирования D: модуль stdio не может прочитать файл std \ stdio.d

Я установил dmd (2.0?) С помощью установщика Windows и пытаюсь скомпилировать следующую программу:

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

Но я получаю следующую ошибку компилятора:

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

Есть ли пути, которые я должен указать в чтобы заставить работать стандартную библиотеку?

11
задан Igor Kustov 2 April 2014 в 19:33
поделиться

2 ответа

Посмотрите на файл ~\windows\bin\sc.ini в каталоге установки dmd. Он содержит неявные аргументы командной строки для dmd, которые должны выглядеть так для dmd 2.048:

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

и

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

Если они в порядке, но это не работает, ваша установка, вероятно, не работает. Я рекомендую вам просто скачать заархивированную версию компилятора и распаковать ее поверх вашей установки.

5
ответ дан 3 December 2019 в 08:53
поделиться

Когда вы получаете подобные ошибки, это означает, что DMD не может найти файл импорта. Если вы импортируете foo.bar.xyz, то он ожидает найти xyz.d в некотором каталоге foo\bar\.

Он ищет этот каталог во всех своих стандартных путях импорта, а также в текущем каталоге (например, если вы добавили каталог std рядом с вашим tcpechoserver.d с stdio.d в нем, то он будет использовать это). Конечно, вам это не нужно — вам нужен стандартный stdio.d.

Вы можете узнать, в каких каталогах он выглядит, открыв файл

C:\D\dmd2\windows\bin\sc.ini (при условии, что вы установили в каталог по умолчанию).

Внутри он должен содержать строку:

(hidden) (hidden)

, которая указывает компилятору искать эти пути при поиске каталогов импорта. Если у вас нет этой строки по какой-либо причине (или если она отличается), попробуйте добавить эту строку в sc.ini (в любом месте под заголовком [Environment] должно быть

Также убедитесь, что каталог dmd2 содержит файл \src\phobos\std\stdio.d.

Если оба эти варианта не работают, то я г рекомендую переустановить с нуля.

8
ответ дан 3 December 2019 в 08:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: