【发布时间】:2022-06-11 00:49:30
【问题描述】:
上下文
我正在开发一个依赖于高性能敏感开源库的跨平台项目。该库支持许多不同的编译器,但性能最高的版本是通过 clang 编译的,因为 MSVC 编译器 (cl) 不支持内联汇编。这向我强调了 clang 能够在 Windows 上编译代码,并发出高性能的 dll 库,但我对 MSVC 工具链和 clang 生态系统的互操作性的理解也存在缺陷。
问题
clang 编译的代码在多大程度上可以与 MSVC 工具链互操作?
- clang ABI 发出的二进制文件是否与 cl 发出的二进制文件兼容,直至并包括最新的语言标准?
- 具体来说,使用 clang 编译的静态库 (.a) 是否可以被 MSVC 工具链使用? (即符号定义不是 dllexport/imported)。
- clang 能否发出 32 位二进制文件?
- 我知道 clang-cl 只是 clang 的一个驱动程序,但是对于新项目是否有任何实际限制或其他原因不支持 clang-cl 而不是 cl?
【问题讨论】:
-
我在最初的问题中没有注意到它,但我已经评估了该链接的内容。它提供了有价值的技术信息并以有意义的方式为答案做出了贡献,因此感谢您做出贡献。
标签: c++ visual-c++ clang clang-cl