पर मैंने वेब और स्टैक ओवरफ्लो को बहुत कुछ खोजा है, लेकिन मेरे निम्नलिखित प्रश्नों का एक निश्चित उत्तर नहीं मिल रहा है।पोर्टिंग क्रॉस-प्लेटफ़ॉर्म सी ++ लाइब्रेरीज़ विंडोज फोन 8 प्लेटफार्म
प्रसंग:
मैं बंदरगाह के लिए विंडोज फोन 8 (WP8) मंच के साथ उपयोग के लिए सी ++ हेल्पर लाइब्रेरी के एक समूह देख रहा हूँ। ऐतिहासिक रूप से, इन पुस्तकालयों को स्थिर libs (डीएलएल के बजाए) के रूप में बनाया गया है।
मैंने सफलतापूर्वक WP8-विशिष्ट कोड लिखा है, ताकि पुस्तकालय WP8 के लिए उपलब्ध एपीआई (संदर्भ बिंदु के रूप में WP API क्विकस्टार्ट दस्तावेज़ का उपयोग करके) एआरएम के खिलाफ संगत और निर्माण कर रहे हों। WinRT के ThreadPool के साथ क्लासिक Win32 थ्रेड कॉल को प्रतिस्थापित करने के कारण, केवल पुस्तकालयों में से एक (उदा। Lib1) को WinRT एक्सटेंशन (/ ZW ध्वज) की खपत की आवश्यकता होती है।
जब लिब 1 का निर्माण होता है, तो मुझे निम्न चेतावनी मिलती है: चेतावनी 1 चेतावनी LNK4264: एक स्थिर पुस्तकालय में/ZW के साथ संकलित ऑब्जेक्ट फ़ाइल संग्रहित करना; ध्यान दें कि विंडोज रनटाइम प्रकारों को संलेखित करते समय इसे एक स्थिर लाइब्रेरी से लिंक करने की अनुशंसा नहीं की जाती है जिसमें विंडोज रनटाइम मेटाडेटा होता है।
- इस चेतावनी के लिए खोज, मैं this article पाया, उन्होंने कहा: "आप एक स्थिर पुस्तकालय है कि सार्वजनिक रेफरी कक्षाएं, सार्वजनिक इंटरफ़ेस कक्षाएं, या सार्वजनिक मूल्य वर्गों बनाता उपभोग करते हैं, तो लिंकर इस चेतावनी को जन्म देती है आप सुरक्षित रूप से अनदेखा कर सकते हैं। चेतावनी अगर स्थिर लाइब्रेरी विंडोज रनटाइम घटकों का उत्पादन नहीं कर रही है जो लाइब्रेरी के बाहर खपत की जाती हैं। स्थिर पुस्तकालय में सार्वजनिक घटक संकलित होंगे लेकिन रन टाइम पर सक्रिय नहीं होंगे। किसी भी विंडोज रनटाइम घटक जो अन्य घटकों या ऐप्स द्वारा खपत के लिए है गतिशील-लिंक लाइब्रेरी (डीएलएल) में कार्यान्वित किया गया। "
लिब 1 में, कक्षाए में WinRT ThreadPool कॉल का उपयोग करके फ़ंक्शन शामिल हैं। क्लासए कार्यों को क्लासबी द्वारा बुलाया जाता है, और वे नियमित रूप से हैंडल और डीडब्ल्यूओआरएस को कक्षाबी में वापस कर देते हैं।
कोड उदाहरण:
// ClassA.cpp
HANDLE WINAPI ClassA::CreateThread(/* Params that are usually passed to Win32 CreateThread */)
{
// Do WinRTThreadPool stuff to create WorkItem
auto workItem = ref new Windows::System::Threading::WorkItemHandler([=](Windows::Foundation::IAsyncAction^)
// More code that eventually results in a Win32 Handle
return handle;
}
// ClassB.cpp
Handle handle = ClassA::CreateThread(/* Params that are usually passed to Win32 CreateThread */);
ClassA के कार्यों ही कभी, ClassB द्वारा बुलाया जाएगा Lib1 के भीतर से, और ClassB तो Lib1 जोड़ने आवेदन के द्वारा प्रयोग किया जा सकता है।
अंत में, अपने सवालों के:
कर सकते हैं सी ++ पुस्तकालयों ऐसा नहीं WinRT एक्सटेंशन (/ ZW) उपभोग करते हैं, जब स्थिर libs के रूप में बनाया गया है, विंडोज फोन द्वारा इस्तेमाल किया जा 8 अनुप्रयोगों ?
सी ++ पुस्तकालय (Lib1) कि का उपभोग करता है सकते हैं WinRT एक्सटेंशन (/ ZW), जब एक स्थिर lib के रूप में बनाया गया है, चेतावनी के बावजूद, Windows Phone 8 अनुप्रयोगों द्वारा इस्तेमाल किया जा?
जवाब या तो सवाल है, मैं, संबंधित पुस्तकालय में कक्षाओं के सभी के लिए WinRT घटक रैपर बनाना पड़ेगा this article तरह मैंडलब्रॉट एल्गोरिथ्म के साथ प्रदर्शित करता है कि करने के लिए नहीं है, तो? या क्या मैं कुछ और याद कर रहा हूँ?
आपके द्वारा प्रदान किए जा सकने वाले किसी भी इनपुट के लिए अग्रिम धन्यवाद।