【发布时间】:2020-04-28 15:51:19
【问题描述】:
我想更改 Rad Studio 10.3 中的默认编译器。我希望使用官方的 clang 而不是 Embarcadero 基于 clang 的编译器。
【问题讨论】:
-
您可以通过在路径中的原始
bcc64(或 32 位版本)之前添加指向clang++的链接(名称为bcc64)来做到这一点 - 但请注意:the embarcadero编译器扩展了语言,您将无法再用它编译 VCL/FMX 代码。不过,一些简单的控制台程序可能会起作用。 -
@TedLyngmo 这很糟糕。我正在寻找一种在不触及整个代码的情况下逃避 ABI 问题的方法。我需要从在 Rad Studio 中使用 VCL 的 C++ 代码在 MSVC 中使用带有 stl 容器的 DLL。感谢您的提醒。
-
使用 C++ Builder 制作与 MSVC 兼容的 DLL 应该不是问题,但我不确定我是否完全理解。是否要创建一个包含 VCL 代码的 DLL 并希望从 MSVC 中使用该 DLL?
-
@TedLyngmo 我想在具有 VCL 的 Rad Studio 中的 c++ 代码中使用包含 STL 容器并使用 MSVC 编译的 DLL。我知道我可以使用 POD,但我不知道这是否是一种常用技术。此外,将来我还想在Linux上编译DLL(作为lib)。
-
@rbw 在 C++Builder 项目中使用 MSVC 编译的 DLL 没有问题,前提是 DLL 遵循某些限制,例如不使用导出的 C++ 类(名称修改问题),或使用非跨 DLL 边界的 POD 类型(IOW,由于不同的 STL 实现,您不能将
std::list从 DLL 返回到 CB)。 DLL 的内部实现可以随意使用它想要的任何东西。只要对std::list的所有访问都被抽象在DLL 函数调用之后,那么就没有问题。 CB 编译器不关心 DLL 在内部做什么,只关心它导出的函数/类型
标签: c++builder clang++