我一直在努力想象这一个,并开始惹恼我.我理解D运行时库.它是什么,它做了什么.我也明白你可以在没有它的情况下编译D app.就像XoMB那样.好吧,XoMB定义了自己的运行时,但有些情况下你不需要编写自己的运行时,如果你不需要它.据我所知,即使用它的DigitalMars D编译器(dmd)在运行时的幕后做了很多事情,比如根据你的程序需要发出对某些东西的引用.而且,每个程序的东西.所以你必须自己定义.我决定尝试,试着弄清楚自己并且相当远.我的意思是让链接器吐出越来越少的错误.对于测试我只想编译一个完整的裸机应用程序,只是为了在没有运行时的情况下工作.或者尽可能少运行时.这是我有我的单一源文件.
module main;
void _main()
{
int a = 2 + 3;
}
Run Code Online (Sandbox Code Playgroud)
我编译:dmd -c main.d -defaultlib =
然后链接:link main.obj
这是我得到的错误:OPTLINK:警告23:没有堆栈和OPTLINK:警告134:没有起始地址
你可以看到我试着chaingng main来_main来摆脱无起始地址错误,但是,无论如何,没有帮助.我需要做些什么来解决这两个最后的错误?如果我可以让它工作,我想我可以查找我需要实现什么来获得更多的功能.但是,如果有人愿意帮助我解决这个问题,那就太过分了!
小智 7
module main;
extern(C) __gshared void* _Dmodule_ref;
extern(C) int main() {
int a = 2 + 3;
return 0;
}
Run Code Online (Sandbox Code Playgroud)