c# - C++ 互操作 DLL 和引用,以及 /FU 强制包含指令
问题描述
我正在修改一个 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
将出现在Command Line
C++ 工具的部分下
我还看看它是否继承了任何特殊的 .props 文件,但它没有。
这是因为我想拆分所有在 MyProject.Interop.cpp 中的类的实现,以便按类组织它们,但是由于#using
没有为这些文件生成隐式,因此它们无法编译
有谁知道项目设置是什么,这使得这个文件很特别?
解决方案
在对项目进行了更多的摆弄并研究了各种选项之后,答案是任何启用了 /clr 的 .cpp 文件都会自动接收/FU
项目参考部分中包含的每个参考的选项
推荐阅读
- sql - SQL 查询通知 - 更新失败,因为以下 SET 选项的设置不正确:'QUOTED_IDENTIFIER'
- ruby-on-rails - Rails:查找用户ID存储在关联表中的用户
- three.js - 如何沿x轴三个js翻转精灵的纹理?
- ios - 'isMenuVisible' 的 Setter 在 iOS 13.0 中已弃用
- javascript - 有没有办法只使用 html 和 css 将页面 B 中的表单插入我的页面 A(相同域)?
- c - 只编译一次正则表达式并在程序退出时进行清理
- arrays - get object from array of arrays
- shell - 在 shell 中执行但不能从 bash 脚本文件中工作时工作
- vega-lite - 如何在 vega-lite 堆叠条形图中控制组的顺序
- android - 在 Qt Creator (Windows) 中构建 Qt 库的问题