मैंने सी ++ वेब सर्वर प्रोजेक्ट के लिए अपना खुद का सिस्टम लॉन्च किया जो मूल रूप से फाइलों (एचटीएमएल, सीएसएस, जेएस, पीएनजी, इत्यादि) का एक गुच्छा ले गया और सी ++ हेडर बनाए जिसमें static const char*
के रूप में एन्कोड किए गए डेटा शामिल थे। मैं फिर #include
उन शीर्षलेखों जहां मुझे डेटा तक पहुंच की आवश्यकता है। ऐप जो 'संसाधन' फ़ाइलों को एन्कोड करता है, पूर्व-निर्माण चरण के रूप में निष्पादित करता है। संसाधन शीर्षलेख बनाने के लिए एन्कोडिंग ऐप ने स्वयं boost::filesystem
का उपयोग किया, इसलिए विंडोज/* निक्स पर काम करता है।
एक ठेठ संसाधन फ़ाइल इस प्रकार दिखाई देंगे:
namespace resource
{
// Generated from mainPage.htm
static const char* mainPage_[] =
{
"<html>...</html>"
};
}
द्विआधारी सामग्री के लिए मैं \x
अंकन का उपयोग सांकेतिक शब्दों में बदलना। मैं डेटा को लाइन-रैप करना भी सुनिश्चित करता हूं ताकि यह एक संपादक में पठनीय हो।
मुझे कुछ समस्याएं थीं - एमएस कंपाइलर static const char*
को 64 केबी से बड़ा होने की अनुमति नहीं देता जो कि पिटा था। सौभाग्य से इस से बड़ी फाइलें जावास्क्रिप्ट फाइलें थीं जिन्हें मैं आसानी से छोटे हिस्सों में विभाजित कर सकता था - हालांकि बड़ी छवियां एक समस्या होगी।
क्या आपके निष्पादन योग्य में संसाधनों को एम्बेड किया जाना चाहिए? यदि नहीं, तो फाइलों को स्टोर करने के लिए SQLite का उपयोग करने वाला कोई अन्य पथ हो सकता है - इस हल्के डेटाबेस के साथ उठना और चलाना बहुत अधिक प्रयास नहीं होगा। – Rob
इसी प्रकार: http://stackoverflow.com/questions/549031/how-do-you-include-images-as-resources-in-a-c-executable – Rob