2016-02-16 6 views
6

मेरे पास एक सी ++ WinRT घटक है, जो मेरे कंसोल ऐप संदर्भ में जोड़ा गया है। यह किसी भी त्रुटि के बिना संकलित है, लेकिन जब एप्लिकेशन चला निम्न त्रुटिसी # कंसोल (विंडोज़ फॉर्म) ऐप में WinRT घटक का उपयोग कैसे करें?

प्रकार 'System.TypeLoadException' की एक बिना क्रिया का अपवाद में हुई मिल mscorlib.dll

अतिरिक्त जानकारी: नहीं मिल सका विंडोज रनटाइम प्रकार ' ProcessorInfoComponent.ProcessorInfoProvider '।

ज फ़ाइल:

#pragma once 

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

.cpp फ़ाइल: my error

यह मेरा कोड है

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

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

और ग # में उपयोग कर रहा है: .cs

static void Main(string[] args) 

    { 

     var processorInfoProvider = new ProcessorInfoComponent.ProcessorInfoProvider(); 

     var isNeonSupported = processorInfoProvider.IsNeonSupported(); 

     Console.WriteLine(isNeonSupported); 

    } 

यह WinRT विंडोज फोन और WPF एपीपी में बहुत अच्छी तरह से काम करता है लेकिन विंडोज़ फॉर्म और कंसोल ऐप में काम नहीं करता है। धन्यवाद।

उत्तर

0

भविष्य में संदर्भ के लिए, यदि आप TypeLoadException के लिए MSDN पृष्ठ पर पढ़ना चाहिए और आप एक try...catch(Exception ex) चारों ओर जहां त्रुटि उत्पन्न कर रहा है किसी भी त्रुटि है कि उत्पन्न हो सकती है पकड़ने के लिए आम तौर पर एक अच्छा तरीका रख दिया और ex.message पर गौर करना चाहिए।

आपके पास होने वाली त्रुटि के संदर्भ में, मुझे पूरा यकीन है कि आप WinRT और WinForms/Console apss को मिश्रित करने में सक्षम नहीं हैं क्योंकि वे विभिन्न तरीकों से निष्पादित होते हैं और WinRT सीमित है, जिसका अर्थ यह नहीं है। नेट फ्रेमवर्क इसलिए WinForms में उपयोग किए गए कई कार्यों का उपयोग नहीं कर सकता है।

इसके अलावा, जिस कारण से यह ठीक से संकलित होता है वह सी # संकलित करता है और प्रोग्राम चलाता है। सी # कंपाइलर कोड को Module में संकलित करता है और फिर assembly में संकलित करता है जिसमें Intermediate Language और कुछ Metadata शामिल हैं। संक्षेप में, प्रोग्राम कोई वाक्यविन्यास त्रुटियों के कारण संकलित करता है लेकिन लाइन var processorInfoProvider = new ProcessorInfoComponent.ProcessorInfoProvider(); को निष्पादित करते समय रनटाइम त्रुटि को हिट करता है।

WinRT कैसे काम करता है इस बारे में कुछ और जानकारी के लिए this वेबसाइट देखें। सी # कंपाइलर पर कुछ और जानकारी के लिए या this वेबसाइट।

उम्मीद है कि इससे मदद मिलती है।

संबंधित मुद्दे