windows - DMD:对链接和构建的误解

标签 windows d dmd

我正在尝试在 Windows 中使用 DMD 编译器本身(没有 IDE)构建一个项目。而且我发现自己几乎无法意识到有关链接的某些时刻。通常 IDE 会为我做这件事。

我的项目结构

project
├──bin
|   ├──exemple.obj
|   └──exemple.exe
└──src
    ├──a
    |  └──b.d
    └──exemple.d

示例.d

import a.b;
void  main() { B obg = new B(); }

b.d

module a.b;
class B {
    private int i;
    public this() {i=0;}
    public void act() {i++;}
}

一开始好像用命令搭建很简单:

cd C:\path\to\my\project
dmd bin\exemple.exe src\exemple.d -IC:\path\to\my\project\src

但它只向我展示了一些错误信息:

OPTLINK (R) for Win32  Release 8.00.13
Copyright (C) Digital Mars 1989-2010  All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
bin\exemple.obj(exemple)
 Error 42: Symbol Undefined _D1a1b1B7__ClassZ
bin\exemple.obj(exemple)
 Error 42: Symbol Undefined _D1a1b1B6__ctorMFZC1a1b1B
--- errorlevel 2

最后我猜是 obj 文件丢失了。我使用命令手动完成了它:

cd bin
dmd ..\src\a\b.d -c
cd ..

然后手动将它添加到我的构建命令中:

dmd bin\exemple.exe src\exemple.d -IC:\path\to\my\project\src bin\b.obj

现在可以了。

太棒了。但是,如果我们有很多额外的 d 文件和复杂的文件夹结构怎么办?

它是怎么雾化的?

当我发现 DMD 不会自动执行所有这些操作时,我感到非常惊讶。也许,我只是做错了。

最佳答案

您不必单独构建 a/b.d。但是您必须将所有源(或目标)文件传递给 dmd。 dmd 没有弄清楚依赖关系。

看看rdmd .它是一个工具,可以找出依赖关系,然后在所有依赖项上运行 dmd(然后默认运行可执行文件,--build-only 会阻止这种情况)。它随 dmd 版本一起提供。

关于windows - DMD:对链接和构建的误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23888440/

相关文章:

php - windows上使用xampp,重写/var/www/

编译器能否在没有有关纯度的类型信息的情况下自动检测纯函数?

d - 基于 D 中的关联数组排序

d - 获取 D 类的父类

d - 关联数组 .remove[] 在 dmd 2.0 中调用 core.stdc.stdio.remove

c++ - mingw make 文件指南 mingw32-make

c# - 打印 GTK Treeview Mono 中的所有行

compilation - 将文本文件导入到 D 中的代码

windows - 使用 Windows Batch 将带有双引号的字符串回显到输出文件

immutability - d2 : immutability of partially known structures