问题标签 [dmd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
996 浏览

c - 为现有 C 库编写 D (D2) 绑定

我真的很想深入了解 D,但缺乏良好的库支持确实阻碍了我。因此,我想为我想使用的现有 C 库创建一些 D 绑定。我从来没有做过任何绑定,但它看起来也不是太难。

我打算为 D2 做这个(不是专门为 D1 做的,但如果两者都适用,那就更好了)。我正在使用 DMD2 编译器。

  • 应该使用哪些约定(我注意到版本语句、别名和常规常量/函数定义)?
  • 绑定到静态库(并因此链接到)或动态库之间有什么区别?绑定有区别吗?
  • 对于绑定静态库,DMD 编译器似乎不接受 .a 或 .o 文件,只接受 .lib 和 .obj。这是否意味着这些库必须使用 DMC 编译器(而不是 GCC 编译器)编译,然后通过 DMD 编译器链接?

如果有人有一个非常简短的例子来说明如何完成绑定,我会非常满意。目前我可以用 DMC 编译 C 代码,链接目标文件并从 D 中的 C 代码运行函数。但是,大多数 C 库只需要包含头文件并且需要在 C 中链接。我不确定如何制作为此工作的绑定......

谢谢!

0 投票
3 回答
2922 浏览

d - D 编程语言中的“收益回报”等价物是什么?

这是一个简单的 C# 生成器。

如何在Digital Mars D 中编写类似的生成器?

(问题是关于产量回报声明)

谢谢!


更新。那很有意思。由于我只是在生成一个数学序列,因此使用递归可能是一个不错的选择。

0 投票
2 回答
130 浏览

d - std.algorithm.filter!() 模板有两个参数而不是一个?

这是一个例子:

现在我希望能够参数化谓词,例如

这个片段显然不会编译,正弦过滤器!()的谓词只接受一个参数。有没有办法克服这个限制而不诉诸良好的 for/foreach 循环?

0 投票
2 回答
1125 浏览

openssl - 在 D 中使用 OpenSSL 库

我在 Ubuntu 10.04 上使用带有 dmd+tango 包的 OpenSSL 库时遇到问题。我已经编译了 OpenSSL 1.0.0d。我有文件:

  • /usr/local/ssl/lib/libssl.a
  • /usr/local/ssl/lib/libcrypto.a

所以,我像这样使用它们:

$ dmd myfile.d -L/usr/local/ssl/lib -L-lssl -L-lcrypto

错误是:

我也用 OpenSSL 0.9.8r 试过这个。我不知道 :/

我可以生成 ssl 证书,所以我假设 OpenSSL 工作正常。

请帮我。

0 投票
1 回答
154 浏览

d - 为什么 readf 不返回值?

根据文档readf应该返回一个uint. 但即使是这个简单的例子也无法编译:

你好ð

错误信息:

我在这里错过了什么吗?

我正在使用 dmd (Digital Mars D) 编译器 v2.050。

0 投票
1 回答
80 浏览

dll - 使用 D1 和 dll 会出现什么问题?

如果 c++ 程序调用该 dll 并且该 c++ 程序是多线程的,那么使用 dmd 编译器 (D1) 编译的 dll 会出现什么问题?

0 投票
2 回答
561 浏览

exception - d 编程语言:标准输入问题或误解?

这是一个简单的程序,它从标准输入读取行并将它们输出到标准输出。

我正在使用 Windows DMD 编译器 v2.052。

如果我做 :type file.txt | test.exe

该程序将单词“test”附加到 file.txt 的每一行并将它们输出到控制台。

但是我最后一直收到错误:

std.stdio.StdioException@std\stdio.d(2138): Bad file descriptor

也许我错过了什么?它让我疯狂!:)

0 投票
1 回答
320 浏览

gcc - 如何在 Ubuntu 上使用 DSFML2 和 D2 解决链接器错误?

我正在运行带有 DMDv2.052 的 64 位 Ubuntu Linux,试图让应用程序与 DSFML2 一起工作,但我一直遇到链接器错误。

我使用共享库 + 发布版本构建了 SFML 和 CSFML 库,并安装了它们,然后像​​这样构建 DSFML 绑定:

尝试构建项目以使用它们时,出现以下错误:

有人可以帮忙吗?我无法让它工作。

0 投票
2 回答
156 浏览

d - D2:switch语句和变量

在“The D Programming Language”一书中,我看到以下内容:

通常case表达式是编译时常量,但 D 也允许 variables,并保证词法顺序评估直到第一个匹配。

代码:

结果:

错误:大小写必须是字符串或整数常量,而不是 foo

怎么了?

PS。我使用 DMD32 D 编译器 v2.053

0 投票
1 回答
254 浏览

javascript - 构建 tangobos 以使用 DMDScript / 让 ECMA 脚本与 D1-Tango 一起使用

我正在尝试在我的 win32 D1-Tango 设置上安装DMDScript-tango 。我使用的版本是0.99.9 Kai bundle

当我尝试构建它时,我收到以下错误(以及其他错误)

看起来它仍然依赖于一些 phobos 代码 - 但由于 DMDScript 源提到了 tangobos,我想我必须安装它才能使 DMDScript 工作。

我读到的内容来看,Tangobos 这些天似乎与探戈捆绑在一起,但我似乎无法让它工作。我不得不假设该页面已过时,并且 tangobos 实际上并没有随 0.99.9 捆绑包一起提供。

所以,我想我会从 svn.dsource.org 获取最新的 tangobos,但是当我尝试构建它时,我得到了这个错误:

我对那些链接器错误一无所知。所以我不知道该怎么做才能解决这个问题。您可以在此处查看 dsss.conf

所以,我的问题是:

  1. 有谁知道如何处理该链接器错误?
  2. 我是不是走错了路?有没有更简单的方法在 D1 中安装 ECMA/JavaScript 脚本引擎?

提前致谢!