【问题标题】:can you link D object files with C object files?您可以将 D 目标文件与 C 目标文件链接起来吗?
【发布时间】:2012-09-24 08:18:38
【问题描述】:

假设我有两个源文件,一个是用 D 编程语言编写的,另一个是用 C 编程语言编写的。我都只是编译它们,使用 DMD(数字火星 D 编译器)的 D 源和使用 GCC 编译器的 C 源。

结果将是来自不同来源的两个 .o(对象)文件。是否可以将这两个文件链接到一个可执行文件中?

【问题讨论】:

    标签: gcc compiler-construction linker dmd object-files


    【解决方案1】:

    这取决于很多事情。处理参数有不同的方式:调用者设置它们,被调用者清理(Windows 中的 Pascal 风格,更紧凑);或者调用者设置和清理(C 风格,使用更多空间,因为清理对每个调用站点重复)。参数可以通过值或引用传递。数据(尤其是数组和结构)可以在内存中以不同的方式布局。从快速查看D's homepage 来看,它具有诸如不可变数据和本机关联数组之类的东西,必须在 C 中匹配(并且可能需要在 D 的运行时中进行链接,除非那个构建在您系统的 C 库上,否则您将在很多痛苦中)。等等。 如果你知道事情是如何完成的细节,你当然可以提供必要的胶水和缺少的编译器支持功能,但并不容易。对于 GCC 编译器,有一些保证和共性会有所帮助,对于不相关的编译器,这可能更像是一场赌博。有一个基于 LLVM 的 D compiler,我猜它有更多机会使用 gcc,因为 clang 的目标之一是 GCC 兼容性。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-31
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 2018-04-13
    相关资源
    最近更新 更多