假设我有两个源文件,一个用D编程语言编写,另一个用C编程语言编写。我只是编译它们,D源与DMD(数字火星D编译器)和C源与GCC编译器。
结果将是两个源自不同来源的.o(对象)文件。是否可以将这两个文件链接到一个可执行文件中?
答案 0 :(得分:0)
这取决于很多事情。有不同的处理参数的方法:调用者设置它们,被调用者清理(Windows中的Pascal风格,更紧凑);或者调用者设置并清理(C样式,使用更多空间,因为每个调用站点都会重复清理)。参数可以通过值或引用传递。数据(特别是数组和结构)可以在内存中以不同方式布局。从D's homepage快速查看它有像不可变数据和本机关联数组这样的东西,它们必须在C中匹配(并且可能需要在D的运行时链接,除非那个构建在你的系统的C库上''会有很多痛苦)。等等。 如果你知道事情的细节,你当然可以提供必要的胶水和缺少的编译器支持功能,但很容易就不会。对于海湾合作委员会的编制者来说,有一些保证和共性可以帮助,对于不相关的编制者来说,这可能更像是一场赌博。有一个基于LLVM的D compiler,我猜它有更多机会使用gcc,因为clang的目标之一是GCC兼容性。