निम्न दृष्टिकोण मानता है कि प्रत्येक .EXE/ऐप (जो इस लाइब्रेरी का उपयोग करता है) का अपना विजुअल स्टूडियो समाधान है।
आपके पास लाइब्रेरी पर नियंत्रण है, है ना? चरण 1-3 अपनी प्रोजेक्ट फ़ाइल में परिवर्तन करेगा, और चरण 4 लाइब्रेरी स्रोत कोड में एक फ़ाइल जोड़ता है।
सेट प्रोजेक्ट गुण> C/C++> उन्नत> सेना mylibrary_solution_defines.h
को भी शामिल है।
प्रोजेक्ट गुणों को संपादित करें> सी/सी ++> सामान्य> निर्देशिकाओं की सूची की शुरुआत में $(SolutionDir);
डालने के लिए अतिरिक्त निर्देशिकाएं शामिल करें।
समाधान निर्देशिका से संबंधित कुछ चीज़ों के लिए परियोजना गुण> सामान्य> आउटपुट निर्देशिका और इंटरमीडिएट निर्देशिका दोनों सेट करें। शायद $(SolutionDir)$(ProjectName)\$(Configuration)
? आप यह सुनिश्चित करना चाहते हैं कि पुस्तकालय को हर समाधान के लिए पुनर्निर्मित किया जाए जो इसका उपयोग करता है; .lib या .obj फ़ाइलों का कोई साझाकरण नहीं होना चाहिए।
mylibrary_solution_defines.h
नामक एक खाली, डमी हेडर फ़ाइल बनाएं और इसे अपने लाइब्रेरी स्रोत कोड में रखें ताकि #include "mylibrary_solution_defines.h"
कभी असफल न हो।
प्रत्येक ऐप/EXE समाधान में - यह मानते हुए कि आपके पास इस लाइब्रेरी का उपयोग करने वाले प्रत्येक ऐप के लिए अलग-अलग समाधान हैं, अन्यथा यह पूरी योजना विफल हो जाएगी - इसमें mylibrary_solution_defines.h
फ़ाइल बनाएं जिसमें आपकी # परिभाषाएं हैं।
क्या आप देखते हैं कि क्या हो रहा है? प्रत्येक लाइब्रेरी स्रोत फ़ाइल निहित #include
एस "mylibrary_solution_defines.h"
, और यह वरीयता से उस निर्देशिका को समाधान निर्देशिका से प्राप्त करती है। ताकि फ़ाइल हर समाधान के लिए अलग हो। इसलिए यदि आपका समाधान ConsoleModeInterfaceProgram.sln
को #define TEXTONLY 1
के साथ निर्मित लाइब्रेरी की आवश्यकता है, तो उस पंक्ति को mylibrary_solution_defines.h
पर रखें जो ConsoleModeInterfaceProgram.sln
के समान निर्देशिका में है।
एक 'config.h' फ़ाइल का उपयोग करें जो आवश्यक प्रीप्रोसेसर परिभाषित करता है, जो लाइब्रेरी प्रोजेक्ट द्वारा शामिल किया गया है, लेकिन एप्लिकेशन प्रोजेक्ट्स द्वारा प्रदान किया गया है (दोष: आपके पास प्रति समाधान फ़ाइल 1 से अधिक एप्लिकेशन प्रोजेक्ट नहीं हो सकता है) – smerlin
Isn' यह वही है जो librik सुझाव देता है? –
हां, वास्तव में .. बस उस जवाब को देखा (हालांकि मेरी टिप्पणी 5 घंटे बाद ..strange लिखा गया था)। – smerlin