如何在D中的不同文件夹中编译多个文件?

时间:2013-12-02 02:36:24

标签: d

project
---|source
------ |controllers
-------|models
-------|lib
----------|field.d
-------|app.d

我运行配音但是我收到了这个错误:

  

错误:来自文件的模块字段...与来自的另一个模块字段冲突   文件源/ lib / field.d

field.d看起来像这样:

   module field;

    class Field(T){

        this(T def_val,bool required,string help_text);

        bool validate();
        private bool _validate(); 
    }

1 个答案:

答案 0 :(得分:5)

始终将模块语句放在要导入的任何文件中,并始终使用包名称以避免冲突。

因此,不是简单地将其称为module field;,而是将其称为module myapplication.field;,甚至是module myapplication.lib.field;,当然,在使用它时也会使用相同的全名导入它。 / p>

我不确定dub是否会像那样工作(我不会亲自使用它),但该语言可以让你给模块任何名字,即使它不匹配文件名,这有助于避免名称冲突。

一般来说,如果你给他们所有完整的,唯一的名字,然后一次编译它们:dmd app.d lib/field.d [and any other files your project has],事情就会起作用。