如何在c#控制台(windows窗体)应用程序中使用WinRT组件? 我有一个C++ WRET组件,添加到我的控制台应用程序参考。它编译时没有任何错误,但运行应用程序时会出现以下错误
中发生类型为“System.TypeLoadException”的未处理异常 mscorlib.dll 其他信息:找不到Windows运行时类型 “ProcessorInfoComponent.ProcessorInfoProvider”。 这是我的代码: .h文件:如何在c#控制台(windows窗体)应用程序中使用WinRT组件? 我有一个C++ WRET组件,添加到我的控制台应用程序参考。它编译时没有任何错误,但运行应用程序时会出现以下错误,c#,windows-runtime,console,C#,Windows Runtime,Console,中发生类型为“System.TypeLoadException”的未处理异常 mscorlib.dll 其他信息:找不到Windows运行时类型 “ProcessorInfoComponent.ProcessorInfoProvider”。 这是我的代码: .h文件: #pragma once namespace ProcessorInfoComponent { public ref class ProcessorInfoProvider sealed { public:
#pragma once
namespace ProcessorInfoComponent
{
public ref class ProcessorInfoProvider sealed
{
public:
bool IsNeonSupported();
};
}
.cpp文件:
#include "pch.h"
#include "ProcessorInfoComponent.h"
using namespace ProcessorInfoComponent;
bool ProcessorInfoProvider::IsNeonSupported()
{
return IsProcessorFeaturePresent(PF_ARM_VFP_32_REGISTERS_AVAILABLE);
}
在c#中使用的是:
.cs
此WinRT在windows phone和WPF应用程序中运行良好,但在windows窗体和控制台应用程序中不起作用。
谢谢。为了将来的参考,您应该在MSDN页面上阅读
TypeLoadException
,并且应该在错误发生的位置周围放置一个try…catch(Exception ex)
,并查看ex.message
,这通常是捕获可能发生的任何错误的好方法
就您所遇到的错误而言,我很确定您无法混合使用WinRT和WinForms/Console apss,因为它们以不同的方式执行,而且WinRT是有限的,这意味着它不包括.Net Framework,因此无法使用WinForms中使用的许多函数
此外,它正确编译的原因是因为C#编译和运行程序的方式。C编译器将代码编译成模块
,然后再编译成汇编
,其中包含一种中间语言
和一些元数据
。简而言之,程序编译时没有语法错误,但在执行行var processorinfo provider=new processorinfo component.processorinfo provider()时遇到运行时错误代码>
有关WinRT如何工作的更多信息,请访问网站。
或者在网站上获取关于C#编译器的更多信息
希望这有帮助
static void Main(string[] args)
{
var processorInfoProvider = new ProcessorInfoComponent.ProcessorInfoProvider();
var isNeonSupported = processorInfoProvider.IsNeonSupported();
Console.WriteLine(isNeonSupported);
}