我安装了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'为了让标准库正常工作,我需要指定一些路径吗?
发布于 2010-08-29 17:57:53
当您收到这样的错误时,这意味着DMD找不到导入文件。如果您使用import foo.bar.xyz,那么它会期望在某个目录foo\bar\中找到一个xyz.d。
它在其所有标准导入路径以及当前目录中搜索此目录(例如,如果您在tcpechoserver.d旁边添加了一个包含stdio.d的目录std,则它将使用该目录)。当然,这不是您想要的--您需要标准的stdio.d。
您可以通过打开该文件来查找它所在的目录
C:\D\dmd2\windows\bin\sc.ini (假设您已安装到默认目录)。
在这里面,它应该包含下面这行:
DFLAGS="-I%@P%\..\..\src\phobos" "-I%@P%\..\..\src\druntime\import"
它告诉编译器在查找导入目录时搜索这些路径。如果由于某种原因没有该行(或者该行不同),那么可以尝试将该行添加到sc.ini中( [Environment]标头下的任何位置都可以)。
还要确保dmd2目录包含\src\phobos\std\stdio.d文件。
如果这两个都不起作用,那么我建议从头开始重新安装。
https://stackoverflow.com/questions/3592788
复制相似问题