错误42:符号未定义

时间:2014-08-06 10:15:29

标签: linker d

我试图在D中编写一个小程序,但我一直在收到链接错误(尽管我不使用外部库)。确切的错误消息是Error 42: Symbol Undefined _D4main4mainFAAyaZv6clientMFZC6client6Client。我的代码是

interface Component
{
public:
    string GetIdentifier();
    void Activate(JSONValue data);
}

class SomeComponent : Component
{
public:
    string GetIdentifier()
    {
        return "SomeComponent";
    }
    void Activate(JSONValue data)
    {
        writeln("Something");
    }
}

class Client
{
public:
    Component[] components;
    void register(Component c)
    {
        components ~= c;
        writeln(c.GetIdentifier());
    }
}

void main(string[] args)
{
    Client client();
    SomeComponent d;
    client.register(d);
}

1 个答案:

答案 0 :(得分:4)

Client client();

在D中,这将声明一个没有参数的函数,它返回一个Client实例。

client.register(d);

这将尝试调用声明的函数。但是,由于它没有正文,程序将编译,但无法链接,因为链接器将无法找到函数体。

你可能意味着:

auto client = new Client();