2013-10-13 22 views
4

我是新来的D语言。我正在尝试导入我的自定义类以供在main()函数中使用。如何从D中的不同源文件导入类?

项目struture:

DlangApp/app.d 
DlangApp/ClassOne.d 

ClassOne.d:

app.d:

import std.stdio; 
import ClassOne; 

void main() 
{ 
    auto aNumber = 10; 
    auto aString = "This is a string."; 
    writefln("A string: %s\nA number: %s", aString, aNumber); 
} 

当我运行dmd -run app.d,我得到这个错误信息:

app.obj(app) 
Error 42: Symbol Undefined _D8ClassOne12__ModuleInfoZ 
---errorlevel 1 

我在这里做错了什么?

回答

5

执行dmd -ofquakkels_app app.d ClassOne.d,如果编译成功,您将获得quakkels_app可执行文件。或者,如果你真的想使用-run <file> [args...]参数:dmd ClassOne.d -run app.d。请注意,我将-run放在最后 - 因为在- 运行文件名之后,您可能希望将一些参数传递给应用程序。

现在你大概明白,为什么你得到了编译错误上面 - 简单的DMD没编译ClassOne.d文件...

+2

或者,尝试'rdmd'。 – personak

3

你可以编译使用rdmd。它是一个包含dmd和一些附加功能的包装器,但您仍然可以通过dmd参数。主要好处是你只需要指定一个.d文件 - 一个带main函数的文件。它理解进口指令,因此它将包括所有必需的.d文件