gpt4 book ai didi

visual-studio - 是否允许在禁用 rtti 的应用程序中链接启用 rtti 的 DLL?

转载 作者:行者123 更新时间:2023-12-04 07:05:04 26 4
gpt4 key购买 nike

我有一个解决方案来构建一个在其项目属性中启用运行时类型信息的 DLL。这是 Visual Studio 2005 中的默认值 (/GR)。在我们的库中,我们有很多 dynamic_cast,因此我目前无法在没有运行时类型信息的情况下构建 DLL。

现在我的客户正在使用 Dassault Systèmes 的开发工具,该工具声明他们不能使用运行时类型信息。它始终被禁用 (/GR-)。

问题是这是否有问题?

我用一个小例子尝试了这种情况,在这个例子中,一个 DLL 是用一些执行动态转换的代码创建的。 DLL 是用 RTTI 构建的 启用。 一个小应用程序使用 DLL,尤其是带有 dynamic_casts 的代码。此应用程序内置 RTTI 已禁用 .它工作正常。但是对于不可预测的行为,任何事情都可能发生......

我想告诉我的客户,将 DLL 与其中一些使用 RTTI 和其他不使用 RTTI 混合不是问题,但我找不到有关它的详细信息(使用 Google、MSDN 等)。有谁知道这个问题的答案?

最佳答案

是的,你可以,但有很大的限制。他们中的一些:

  • 不要从 DLL 中传递任何异常,
  • 不要在非 RTTI 代码上使用 dynamic_cast,
  • 您可以通过比较 DLL sizeof(DllClass[10]) != sizeof(DllClass)*10
  • 中的类数组的大小来获得奇怪的效果
  • ...

  • 在非 RTTI 环境中使用启用 RTTI 的 DLL 的最典型例子是 inproc OLE 服务器。您可以使用嵌入到任何应用程序中的任何选项来开发 DLL。

    关于visual-studio - 是否允许在禁用 rtti 的应用程序中链接启用 rtti 的 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1238325/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com