【发布时间】:2015-12-11 09:44:04
【问题描述】:
我尝试调整这个答案...
https://stackoverflow.com/a/26924384/105539
...所以我将一个 C++ 字符串传递给 D,然后用“-response”返回它,但它无法编译 D 文件:
// dtest.d
extern (C++) string dfunc(string s) {
return s ~ "response";
}
$ dmd -c dtest.d
Error: Internal Compiler Error: unsupported type string
dmd: cppmangle.c:576: virtual void CppMangleVisitor::visit(Type*): Assertion `0' failed.
Aborted (core dumped)
然后,我不知道如何编写 C++ 文件以使其正确传递此值并正确接收。
【问题讨论】:
-
即使这不应该工作,D 编译器也不应该因内部编译器错误而崩溃。可能想要提交错误报告。
-
我发现我今天可以通过 brew 使用
sudo brew update; sudo brew upgrade dmd更新我的 dmd。现在我有了,同样的代码补丁返回Error: Internal Compiler Error: unsupported type string然后Segmentation fault: 11所以,看起来编译器现在已经修复了这个错误。同时,我们在下面有一个答案。 -
不,没有;仍然存在内部编译器错误,然后是段错误。这两种情况都不应该发生。