我有一个c++ WinRT组件,已添加到我的控制台应用程序引用中。它编译没有任何错误,但是在运行应用程序时出现以下错误
这是我的代码:
.h文件:
#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
static void Main(string[] args)
{
var processorInfoProvider = new ProcessorInfoComponent.ProcessorInfoProvider();
var isNeonSupported = processorInfoProvider.IsNeonSupported();
Console.WriteLine(isNeonSupported);
}
此WinRT在Windows Phone和WPF APP中运行良好,但在Windows窗体和控制台应用程序中不起作用。
谢谢。
最佳答案
为了将来引用,您应该在MSDN页面上阅读TypeLoadException
,并在发生错误的地方放置try...catch(Exception ex)
并查看ex.message
,这通常是捕获可能发生的任何错误的好方法。
就您所遇到的错误而言,我很确定您无法混合使用WinRT和WinForms/Console apss,因为它们以不同的方式执行并且WinRT受到限制,这意味着它不包含.Net Framework,因此不要使用WinForms中使用的许多功能。
另外,它正确编译的原因是由于C#编译和运行程序的方式。 C#编译器将代码编译为Module
,然后编译为assembly
,其中Intermediate Language
包含Metadata
和一些var processorInfoProvider = new ProcessorInfoComponent.ProcessorInfoProvider();
。简而言之,该程序由于没有语法错误而进行编译,但是在执行ojit_code行时遇到了运行时错误。
请访问this网站,以获取有关WinRT工作原理的更多信息。
或this网站获取有关C#编译器的更多信息。
希望这可以帮助。
关于c# - 如何在C#控制台(Windows窗体)应用程序中使用WinRT组件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35425449/