2016-02-16 18 views
6

Mam składnik WinRT C++, dodany do odwołania do mojej aplikacji konsoli. Kompiluje bez błędów, ale podczas uruchamiania aplikacji uzyskać następujący błądJak używać komponentu WinRT w aplikacji C# console (windows form)?

nieobsługiwany wyjątek typu „System.TypeLoadException” wystąpił w mscorlib.dll

Informacje dodatkowe: nie można odnaleźć typ systemu Windows Runtime ' ProcessorInfoComponent.ProcessorInfoProvider ". my error

To jest mój kod:

plik .h:

#pragma once 

namespace ProcessorInfoComponent 
{ 
public ref class ProcessorInfoProvider sealed 
{ 
    public: 
     bool IsNeonSupported(); 
}; 
} 

plik .cpp:

#include "pch.h" 
#include "ProcessorInfoComponent.h" 
using namespace ProcessorInfoComponent; 

bool ProcessorInfoProvider::IsNeonSupported() 
{ 
    return IsProcessorFeaturePresent(PF_ARM_VFP_32_REGISTERS_AVAILABLE); 
} 

i używania w C# jest: .cs

static void Main(string[] args) 

    { 

     var processorInfoProvider = new ProcessorInfoComponent.ProcessorInfoProvider(); 

     var isNeonSupported = processorInfoProvider.IsNeonSupported(); 

     Console.WriteLine(isNeonSupported); 

    } 

ten WinRT działa bardzo dobrze w telefonach z systemem Windows i aplikacji WPF, ale w formie okna i aplikacji konsoli nie działa. dzięki.

Odpowiedz

0

do wykorzystania w przyszłości, należy zapoznać się na stronie MSDN dla TypeLoadException i należy umieścić try...catch(Exception ex) wokół gdzie błąd jest występujących i spojrzeć na ex.message, ogólnie dobry sposób, aby wychwycić wszystkie błędy, które mogłyby zostać występuje.

Jeśli chodzi o występujący błąd, jestem prawie pewien, że nie można mieszać apletów WinRT i WinForms/Console, ponieważ są one wykonywane na różne sposoby, a WinRT jest ograniczony, co oznacza, że ​​nie obejmuje. Net Framework, więc nie można używać wielu funkcji używanych w WinForm.

Powodem, dla którego kompiluje się poprawnie, jest sposób, w jaki C# kompiluje i uruchamia programy. Kompilator C# kompiluje kod do Module, a następnie do assembly, który zawiera Intermediate Language i niektóre . W skrócie, program kompiluje się z powodu braku błędów składniowych, ale powoduje błąd runtime podczas wykonywania linii var processorInfoProvider = new ProcessorInfoComponent.ProcessorInfoProvider();.

Zajrzyj na stronę internetową this, aby uzyskać więcej informacji na temat działania WinRT. lub strona internetowa this, aby uzyskać więcej informacji na temat kompilatora języka C#.

Mam nadzieję, że to pomoże.

Powiązane problemy