【问题标题】:C++ Interop DLL and References, and the /FU Forced Includes directiveC++ 互操作 DLL 和引用,以及 /FU 强制包含指令
【发布时间】:2019-10-18 10:48:02
【问题描述】:

我正在修改一个 Interop 项目,我很困惑一个 .cpp 文件如何应用 /FU 编译器选项来匹配在“引用”部分添加的任何引用,尽管它实际上并未列在“强制 #using 文件”下”。

只有名为 "MyProject.Interop.cpp" 的文件列出了此 /FU 选项。

我假设可能是因为 cpp 文件与项目文件的名称匹配,但是我可以将 MyProject.Interop.cpp 重命名为 Bob.cpp,它仍然会以 /FU 选项设置为任何结果我添加到引用中的 dll。

如果您确实查看了 .vcxproj 文件,则没有对 /FU 选项的引用。如果我在 C++\Advanced 下的高级部分手动添加一个,那么它会出现在 XML 中的 ForcedIncludeFiles 标记下。

所以用下面的项目设置

<Reference Include="MyCSharpLibrary">
    <Private>false</Private>
  <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
</Reference>

/FU 将出现在 C++ 工具的 Command Line 部分下

我还查看了它是否继承了任何特殊的 .props 文件,但它没有。

这是因为我想拆分 MyProject.Interop.cpp 中所有类的实现,以便按类组织它们,但是由于未生成隐式 #using,因此它们无法编译对于那些文件

有谁知道项目设置是什么让这个文件与众不同?

【问题讨论】:

    标签: c# visual-studio-2015 c++-cli interop


    【解决方案1】:

    在对项目进行了更多的摆弄并研究了各种选项之后,答案是任何启用了 /clr 的 .cpp 文件都会自动接收项目参考部分中包含的每个参考的/FU 选项

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 2022-08-08
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多