windows的d

原地址
在其它系统,在version(Posix)下,一般都有c编译器,而windows下不一样.主要目的是确保可用c编译器.
假定有以下2源文件cfoo.c及dfoo.d:

#include <stdio.h>
void say_hello(void) 
{
    puts("Hello!");
}

及:

extern(C) void say_hello();
void main() 
{
    say_hello();
}

我们让其一起工作.
d窗口包中提供了链接器,工具,系统库.因而窗口版本是d不需要外部依赖的,也没安c编译器.现在都是开箱即用.其他平台c编译器为gcc与clang,dmdld,lld,ld.gold,等其他ld兼容工具来链接.窗口中,你可以用dmc或cl(微软).
(Optlink)dmd一同分发,一般(即使是-m32)也用optlink.exe,要链接c目标/静态库,要用omf格式.dmc生成omf格式,可在这里下载.解压并添加至路径.

echo 欢迎
@set PATH=C:\D\dmd2\windows\bin;C:\D\dm\bin;%PATH%

保存为一个快捷方式.然后

C:\System\Win32\cmd.exe /k C:\d\dmenv.bat

双击,就可以让你dmd,dmc都可用了.查看相应文本.
现在:

dmc -c cfoo.c
dmd dfoo.d cfoo.obj
dfoo

cl.用VS2019.就是太大了.安装dmd,见安装dmd.安装包可以检测vs.或者安装Visuald插件.然后加上相应配置.有命令行的环境设置.可先调用这些批处理.再执行命令.
然后就可以:

cl /c cfoo.c
dmd -m64 dfoo.d cfoo.obj
dfoo

32位的话,用-m32mscoff.重用已有工具开发现在语言,已是必然.如kotlin利用jre,或rust利用llvm.当d作者开始d时,还没有这种趋势,不过其已有c++后端的工具链.所以,重用是必然的.但有4个副作用.
1,dmc仅窗口.2,链接格式为omf与coff不匹配.3,dmc不支持64位,不过现在dmd后端已boost开源.
dmd,0.0,2001年,0.063版本支持林操,为了避免法律问题,d作者修改后端来支持elf格式,并提交给gcc.对马操也是如此,他支持了mach-o格式.
为了对接窗口c,以前用coffimplib来转换coff->emf格式或创建dll绑定.然后d作者支持了64位,即使微软有些未文档化,同时也支持了32位的coff格式.
因而窗口上必须依赖c编译器cl,当然未来可能也可以用mingw-w64.就不必依赖微软工具了.

posted @   zjh6  阅读(20)  评论(0编辑  收藏  举报  
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示