我一直试图永远解决这个问题,它开始让我烦恼。我了解 D 运行时库。它是什么,它做什么。我也明白你可以在没有它的情况下编译一个 D 应用程序。就像 XoMB 所做的那样。好吧,XoMB 定义了它自己的运行时,但在某些情况下,如果你不需要它,你就不需要编写自己的运行时。我知道我正在使用的 DigitalMars D 编译器 (dmd) 在运行时在幕后做了很多事情,比如根据程序所需的内容发出对某些事情的引用。而且,每个程序的东西。所以你必须自己定义这些。我决定尝试一下,试着自己弄清楚,然后走得很远。我的意思是让链接器吐出越来越少的错误。对于测试,我只想编译一个完整的准系统应用程序,只是为了让事情在没有运行时的情况下工作。或者尽可能少的运行时间。这是我的单一源文件。
module main;
void _main()
{
int a = 2 + 3;
}
我编译: dmd -c main.d -defaultlib=
然后链接:link main.obj
这是我得到的错误: OPTLINK : 警告 23: No Stack & OPTLINK: Warning 134: No Start Address
您可以看到我尝试将chainng main 连接到_main 以摆脱无起始地址错误,但无论如何,没有帮助。我需要做什么来消除这最后两个错误?如果我能让它工作,我想我可以查看我需要实现什么来让更多功能工作。但是,如果有人愿意帮助我解决这个问题,那将不胜感激!