【问题标题】:"Additional Module Dependencies" and "Additional BMI Directories" settings in Visual StudioVisual Studio 中的“附加模块依赖项”和“附加 BMI 目录”设置
【发布时间】:2021-03-03 18:10:00
【问题描述】:

假设我有两个模块 - Module1、Module2。 每个模块在 Visual Studio 中都有自己的项目。 如何使用“附加模块依赖”或“附加 BMI 目录”设置将 Module2 导入 Module1?

问题:Visual Studio (2019/2022) 在 Module2 中找不到任何符号。

在 Module1 中添加对 Module2 的引用没有帮助。

https://devblogs.microsoft.com/cppblog/a-tour-of-cpp-modules-in-visual-studio/ 没有多大帮助

【问题讨论】:

  • 我建议您可以在Microsoft Developer Community 上提交这个问题。您可以在那里提出您的需求。
  • 你让它工作了吗?你能分享你的修复方法吗?
  • 没有:(//////////
  • 绝对精彩。一年多过去了,没有人知道如何使用它。
  • 我认为只需添加另一个项目作为参考就可以解决问题。模块目录和模块依赖项适用于第 3 方模块。

标签: c++ visual-studio module c++20


【解决方案1】:

只有当它们的配置类型等于静态库 (lib) 时,才能包含带有模块的项目。对于其他类型,例如动态库和可执行文件,您需要设置 Additional Module Dependencies。当项目编译为静态库时,包含项目只需要添加对您的模块项目的引用即可。引用非 lib 项目时,您需要手动编译模块,因为构建依赖项似乎无法为您处理。

【讨论】:

    【解决方案2】:

    您可以使用“附加模块依赖项”指向要从中导入符号的 ifc(例如 StaticLib1.ixx.ifc)

    这是编译器所期望的: https://docs.microsoft.com/en-us/cpp/build/reference/module-reference?view=msvc-160

    【讨论】:

    • 这不起作用(对我来说)。无论我提供附加标头依赖项,链接器都拒绝解析外部符号。设置“Scan Sources for Module Dependencies”似乎有助于 VS 完成某些代码,但仅此而已。
    • @HJLebbink 为什么要在应该将文件名添加到附加 模块 依赖项时提供附加 Header 依赖项?
    【解决方案3】:

    如果一切看起来都正确,但它不起作用 - 请检查您没有在预编译的标头中导入模块,反之亦然。

    【讨论】:

    • 这并不能真正回答问题。如果您有其他问题,可以点击 提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
    猜你喜欢
    • 2011-12-28
    • 2011-05-03
    • 2021-05-28
    • 2013-01-12
    • 2017-04-06
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 2010-11-12
    相关资源
    最近更新 更多