【发布时间】:2012-08-02 02:08:40
【问题描述】:
我正在尝试将 D3D11 调用封装在我正在开发的 API 中。
我制作了一个 C++/CX 组件库,我正尝试在 C# 中使用它。如果 C++/CX 组件和 C# 项目在同一个解决方案中,这很简单明了,一切都会正常工作...
...但是如果我在其 OWN 解决方案中创建我的 C++/CX API 组件,则创建第二个 C# Metro App 解决方案并将我的 C++/CX 组件“项目”添加到其中,然后让我的 C# Metro App 引用 C++ /CX 组件项目我在尝试使用在 C++ 中声明的公共枚举时遇到运行时错误。
这是我的 C# 应用似乎无法链接到的公共枚举类错误。
"找不到 Windows 运行时类型 'Reign.Video.D3D11.FeatureLevels'。”
这非常令人沮丧,因为我似乎无法让我的 C++/CX“API”内容在 C# 应用程序中正确链接以进行测试。您打算如何在 Metro 上高效地测试用 C++ 制作的 API?您不能将 C++/CX 组件链接到 C# 项目,除非在同一个解决方案中,并且如果您尝试将 C++/CX 项目链接到 C# 解决方案并从那里链接它,则会出现运行时错误...
编辑:这是演示我的问题的下载链接: Download
【问题讨论】:
-
您是否尝试过将 Reign.Video.D3D11.FeatureLevels 枚举设为“枚举”而不是 C++0x“枚举类”?
-
如果你这样做,枚举根本不会暴露给 C#... 它必须是一个“枚举类”。
-
您应该在使用您的项目构建的 Reign.Video.winmd 文件上运行 ildasm 工具。这将显示所有暴露给 C# 的类。可能其中包含有助于诊断问题的信息。
-
嘿 tnx 获取有关“ildasm”的信息不知道该工具存在,非常有用。尽管它似乎对我没有帮助。它表明“FeatureLevels”实际上是存在并被暴露的。
-
嗯。底层 __value 条目的类型是什么?
标签: c# enums microsoft-metro windows-runtime c++-cx