【问题标题】:Cannot Build/Run VisualD Console Example无法构建/运行 VisualD 控制台示例
【发布时间】:2015-05-04 02:23:49
【问题描述】:

我在几分钟前安装了 Visual D(我想试一试该语言),并使用内置控制台示例尝试构建和运行它。这是 Visual Studio 为我生成的代码:

import std.stdio;

int main(string[] argv)
{
    writeln("Hello D-World!");
    return 0;
}

这是我收到的构建错误:

------ Build started: Project: TestingDApp, Configuration: Debug Win32 ------
Building Debug\TestingDApp.exe...
C:\D\dmd2\windows\bin\..\..\src\phobos\std\range.d(287): Error: module std.range from file C:\D\dmd2\windows\bin\..\..\src\phobos\std\range.d conflicts with package name range
C:\D\dmd2\windows\bin\..\..\src\phobos\std\range.d(287): Error: module std.range from file C:\D\dmd2\windows\bin\..\..\src\phobos\std\range.d conflicts with package name range
C:\D\dmd2\windows\bin\..\..\src\phobos\std\array.d(1480): Error: undefined identifier 'iteration'
Assertion failure: 'type->ty != Tstruct || ((TypeStruct *)type)->sym == this' on line 929 in file 'struct.c'
Building Debug\TestingDApp.exe failed!
Details saved as "file://C:\Users\Krythic\Desktop\TestingRoot\TestingDApp\TestingDApp\Debug\TestingDApp.buildlog.html"
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

哦,这里是“详细信息另存为”打印出来的内容:

Build Log  
Building Debug\TestingDApp.exe  
Command Line  
set PATH=C:\D\dmd2\windows\bin;C:\Program Files (x86)\Microsoft Visual Studio 12.0\\Common7\IDE;C:\Program Files (x86)\Windows Kits\8.1\\bin;%PATH%
dmd -g -debug -X -Xf"Debug\TestingDApp.json" -deps="Debug\TestingDApp.dep" -c -of"Debug\TestingDApp.obj" main.d
if errorlevel 1 goto reportError

set LIB="C:\D\dmd2\windows\bin\..\lib"
echo. > C:\Users\Krythic\Desktop\TestingRoot\TestingDApp\TestingDApp\Debug\TestingDApp.build.lnkarg
echo "Debug\TestingDApp.obj","Debug\TestingDApp.exe_cv","Debug\TestingDApp.map",user32.lib+ >> C:\Users\Krythic\Desktop\TestingRoot\TestingDApp\TestingDApp\Debug\TestingDApp.build.lnkarg
echo kernel32.lib/NOMAP/CO/NOI/DELEXE >> C:\Users\Krythic\Desktop\TestingRoot\TestingDApp\TestingDApp\Debug\TestingDApp.build.lnkarg

"C:\Program Files (x86)\VisualD\pipedmd.exe" -deps Debug\TestingDApp.lnkdep C:\D\dmd2\windows\bin\link.exe @C:\Users\Krythic\Desktop\TestingRoot\TestingDApp\TestingDApp\Debug\TestingDApp.build.lnkarg
if errorlevel 1 goto reportError
if not exist "Debug\TestingDApp.exe_cv" (echo "Debug\TestingDApp.exe_cv" not created! && goto reportError)
echo Converting debug information...
"C:\Program Files (x86)\VisualD\cv2pdb\cv2pdb.exe" "Debug\TestingDApp.exe_cv" "Debug\TestingDApp.exe"
if errorlevel 1 goto reportError
if not exist "Debug\TestingDApp.exe" (echo "Debug\TestingDApp.exe" not created! && goto reportError)

goto noError

:reportError
echo Building Debug\TestingDApp.exe failed!

:noError
Output  
C:\D\dmd2\windows\bin\..\..\src\phobos\std\range.d(287): Error: module std.range from file C:\D\dmd2\windows\bin\..\..\src\phobos\std\range.d conflicts with package name range
C:\D\dmd2\windows\bin\..\..\src\phobos\std\range.d(287): Error: module std.range from file C:\D\dmd2\windows\bin\..\..\src\phobos\std\range.d conflicts with package name range
C:\D\dmd2\windows\bin\..\..\src\phobos\std\array.d(1480): Error: undefined identifier 'iteration'
Assertion failure: 'type->ty != Tstruct || ((TypeStruct *)type)->sym == this' on line 929 in file 'struct.c'
Building Debug\TestingDApp.exe failed!

当我构建应用程序时,我会收到一个消息框,上面写着:

有人知道我做错了什么吗?

【问题讨论】:

  • 你确定你有一个全新的编译器安装?看起来那里的版本可能不匹配。几个版本之前,range.d 是一个文件。现在,它是一个包含一堆文件的文件夹。也许新文件夹已解压缩,而旧文件仍然存在,现在导致冲突。我会尝试删除旧的 dmd2 文件夹并用新版本替换它。
  • @AdamD.Ruppe 我在卸载所有内容后进行了全新安装。这次我在新项目部分收到了一个不同的选项,最后包含“dmd”。我猜我第一次安装它时,它没有正确安装编译器。不过,我现在可以正常工作了。

标签: d build-error


【解决方案1】:

写我的评论作为答案,因为它似乎已经解决了问题:必须删除旧安装的编译器和库,并在其上放置一个全新的新版本。

在最新版本的库中,旧的 range.d 被替换为新的 range/ 文件夹,但安装新版本时旧文件保留在原位。所以编译器很困惑:它应该使用文件夹还是文件? unsinstall+reinstall 清理干净,删除旧文件,只留下新文件。

【讨论】:

  • 问题实际上是因为我检查了两个编译器版本,并且无论出于何种原因,新设置订阅了已弃用的编译器。为了修复它,我确保在安装过程中不要勾选旧编译器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 2014-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
相关资源
最近更新 更多