如何从D中的不同源文件导入类?

qua*_*els 4 d

我是D语言的新手.我试图导入我的自定义类以在main()函数中使用.

项目结构:

DlangApp/app.d
DlangApp/ClassOne.d
Run Code Online (Sandbox Code Playgroud)

ClassOne.d:

import std.stdio;

class ClassOne
{
    string firstName;
    string lastName;

    this(string first, string last)
    {
        firstName = first;
        lastName = last;
    }

    void writeName()
    {
        writefln("The name is: %s %s", firstName, lastName);
    }
}
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)

当我运行时dmd -run app.d,我收到此错误消息:

app.obj(app)
 Error 42: Symbol Undefined _D8ClassOne12__ModuleInfoZ
---errorlevel 1
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

Dej*_*kic 5

执行dmd -ofquakkels_app app.d ClassOne.d,如果编译成功,您将获得quakkels_app可执行文件.

或者,如果你真的想使用-run <file> [args...]参数:dmd ClassOne.d -run app.d.请注意,我将-run放在最后 - 因为在-run filename之后,您可能希望将一些要传递给参数的参数传递给应用程序.

现在您可能已经理解为什么会出现上面的编译错误 - 只是DMD没有编译ClassOne.d文件...

  • 或者,尝试`rdmd`. (2认同)