我想创建一个包含C ++和D的程序,并且希望能够作为一个单独的项目进行处理。
我的理解是,我可以使用某些D编译器输出* .obj文件,然后可以对某些C ++编译器执行相同的操作,然后将所有* .obj文件链接到一个二进制文件中,这是正确的吗?
如果正确,是否可以将任何C ++编译器与任何D编译器一起使用?还是我仅限于某些组合,例如DMD-DMC,LDC-Clang和GDC-GCC?
我使用哪个链接器?
我要使用哪个标准库?
从理论上讲,您可以混合使用编译器,但实际上,有时会遇到目标文件格式和标准库混合的问题,尤其是在32位Windows上。那里很难,但在其他地方也并不算太糟,因为大多数事物都是基于事实上的标准,例如MSVC和gcc。
Win32:将dmc ++(数字火星编译器和C运行时)与dmd OR g ++和gdc一起使用。可以进行其他组合,但是很杂乱。跨编译器系列在Win32中混合代码的最佳方法是使用C或COM api构建DLL,然后从D使用它。
Win64:由于dmd使用64位Microsoft格式和C库,因此将dmd与Visual C ++代码混合应该没有什么麻烦。我不确定带有dmd的Windows64上的g ++。
包括Linux在内的大多数其他平台:dmd与g ++以及gdc + gcc都可以很好地协同工作。我不确定ldc和g ++是否兼容,但是ldc在任何平台上也可以与其他基于LLVM的编译器一起正常工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句