Visual studio 在一个“文件”中使用多个.IDL(MIDL)文件的正确方法;Windows运行时组件C++/温特;项目

Visual studio 在一个“文件”中使用多个.IDL(MIDL)文件的正确方法;Windows运行时组件C++/温特;项目,visual-studio,windows-runtime,c++-winrt,Visual Studio,Windows Runtime,C++ Winrt,Visual Studio 2019。Windows运行时组件C++/WinRT项目 我如何遵循并实现建议:“我们建议您使用自己的接口定义语言(IDL)(.IDL)声明每个运行时类文件,以便在编辑IDL文件时优化生成性能,并使IDL文件与其生成的源代码文件具有逻辑对应关系。Visual Studio将所有生成的.winmd文件合并到一个与根命名空间同名的文件中。最终的.winmd文件将是您组件的使用者可以使用的文件“我会参考的。” 在同一个项目中,我可以使用project->add New I

Visual Studio 2019。Windows运行时组件C++/WinRT项目

我如何遵循并实现建议:“我们建议您使用自己的接口定义语言(IDL)(.IDL)声明每个运行时类文件,以便在编辑IDL文件时优化生成性能,并使IDL文件与其生成的源代码文件具有逻辑对应关系。Visual Studio将所有生成的.winmd文件合并到一个与根命名空间同名的文件中。最终的.winmd文件将是您组件的使用者可以使用的文件“我会参考的。”

在同一个项目中,我可以使用project->add New Item->Midl file(.IDL)添加第二个(第三个)IDL文件。这好像行吗?!然后为每个.IDL文件手动添加相关的.h和.cpp文件。生成存根文件,然后在最终生成成功之前手动复制并“填充”这些文件。通过这种方式,每个运行时类都有一个IDL文件及其相关的头文件和实现文件,包括实现所需的任何其他文件(c++.h和.cpp文件)。当我需要为接口添加功能时,我只需编辑IDL文件,重新构建和向头文件和实现C++文件添加功能。 这是推荐的吗

当我添加.IDL文件,然后手动添加关联的.h和.cpp时,它们不会像我创建新项目时原始文件那样出现在.IDL文件的“下方”。这只是解决方案资源管理器的一个视觉细节,还是这表明我出了什么问题

我计划有多个“C++/WinRT WRC”项目(每个命名空间一个项目,每个项目由多个runtimeclass接口组成,每个接口带有单独的.IDL/.h/.cpp文件,如上所述)。然后我在我的单个C#/UWP应用程序中引用所有项目(项目到项目)


我实际上是试图实现一个用户界面,允许我利用一个数学/工程C++类的大代码库,实现了一个非常具体的专有类型的电子电路仿真,它已经在C++中被编程,并被编译为一个控制台应用程序。生成输出时发生的异常。

看起来您正确地处理了idl文件,这种行为与我直接添加新的Midl文件时所经历的行为相同


如果您喜欢将.h和.cpp文件置于“下”的外观在树中的.idl文件中,您可以尝试添加新的视图模型,而不是新的Midl文件。这将创建具有相同名称的.idl/.h/.cpp文件,并将.h和.cpp文件直观地放置在Midl文件下。通过这种方式获得的idl模板用于基本运行时类。

在.idl文件名和corres之间没有关联实现类型的ponding.h/.cpp文件名,而不是cppwinrt.exe工具应用相同基名称的约定。Visual Studio的解决方案资源管理器中的分组似乎对工具依赖项进行了建模(但我从未见过.idl文件的这种情况,与.xaml文件不同).但即便如此,更改.idl始终需要手动更新实现类型,因此自动依赖项跟踪在这里也买不到任何东西。我现在意识到,由于VS(类似于C#UWP项目的“MainPage.xaml”下出现的“MainPage.xaml.cs”)的分组行为.Rename Class.idl然后相应地重命名Class.h和Class.cpp。可能还没有包括功能(扩展名的限制)来添加更多的.idl(手动除外)。我保持命名并手动添加更多的.idl文件以及相关的.h和.cpp文件。“全部构建”似乎可以正常工作。谢谢。