2013-02-20 24 views
7

में किसी फ़ोल्डर में फ़ाइल शामिल करें मैं वर्तमान में एक Arduino लाइब्रेरी लिख रहा हूं और मैं लाइब्रेरी फ़ोल्डर के भीतर एक उपनिर्देशिका में फ़ाइलों को शामिल करना चाहता हूं। अधिक विशेष रूप से, मैं चाहता हूं कि फाइलें Arduino स्केच से accesible हो।एक Arduino लाइब्रेरी

#include <MyLib.h> 
#include <Extra/SomeNiceFunctions.h> 

जाहिर है इस आईडीई पुस्तकालय सहित है, क्योंकि जिस तरह से गलत है:

MyLib/MyLib.cpp 
MyLib/MyLib.h 
MyLib/Extra/SomeNiceFunctions.cpp 
MyLib/Extra/SomeNiceFunctions.h 

यह मैं कैसे फ़ाइल शामिल करने के लिए कोशिश कर रहा हूँ है:

यह मेरा निर्देशिका संरचना है फ़ोल्डरों। मुझे और क्या करना चाहिए? मैं अतिरिक्त फ़ोल्डर को अन्य "लाइब्रेरी" (एक और फ़ोल्डर) में विभाजित कर सकता हूं लेकिन यह वह नहीं है जो मैं कर रहा हूं।

संपादित करें: यह त्रुटि है जो मुझे undefined reference to 'font8x8' मिल रही है। यह Extra/SomeNiceFunctions.h में परिभाषित किया गया है।

उत्तर

2

का प्रयोग न करें

#include <MyLib.h> 
#include <Extra/SomeNiceFunctions.h> 

बजाय

#include <arduinolib.h> 
#include "MyLib.h" 
#include "Extra/SomeNiceFunctions.h" 

का उपयोग कोण कोष्ठक का उपयोग करना, संकलक शामिल-फ़ाइलों के लिए मानक-फ़ोल्डर में लग रहा है। आप अपनी कार्यशील निर्देशिका में अपनी कस्टम फाइलें चाहते हैं।

+0

सभी फ़ाइलें मेरे Arduino लाइब्रेरी फ़ोल्डर में हैं, स्केच फ़ोल्डर में नहीं, लेकिन आप सही हैं! – giannoug

+1

फिर अगर यह काम करता है तो उत्तर के रूप में चिह्नित करें। –

+0

दुर्भाग्यवश, ऐसा नहीं हुआ। – giannoug

-1

this stack overflow question से उधार,

पथ स्केच की निर्देशिका, लक्ष्य निर्देशिका (/ हार्डवेयर/कोर //) और AVR शामिल शामिल हैं निर्देशिका (/ हार्डवेयर/उपकरण/AVR/AVR/शामिल /), साथ ही साथ किसी लाइब्रेरी निर्देशिका (में/हार्डवेयर/पुस्तकालय /) जिसमें एक शीर्षलेख फ़ाइल है जो मुख्य स्केच फ़ाइल द्वारा शामिल है। जहां अपने मुख्य शामिल फ़ाइल है देखो और ऊपर जाना:

Arduion/ऊर्जा पुस्तकालयों कि Arduino/ऊर्जा उप-फ़ोल्डर में हैं सहित के बारे में प्रयास करें

// in myProject.ino 
#include <arduinolib.h> 
#include "MyLib.h" 

// in Mylib.h 
#include "./extra/SomeNiceFunctions.h" 
+1

'SomeNiceFunctions.h' स्वचालित रूप से शामिल नहीं है क्योंकि यह लाइब्रेरी फ़ोल्डर में उपफोल्डर में है। – giannoug

+0

अंतिम वाक्य में, यह निर्दिष्ट करता है कि शीर्ष स्केच फ़ाइल द्वारा शीर्षलेख को शामिल करने की आवश्यकता है। क्या आपने हेडर को मुख्य स्केच में जोड़ने का प्रयास किया है? क्या आपने MyLib.h में SomeNiceFunctions सहित कोशिश की है? –

0

(arduino.h/energia.h जैसे।) निर्देशिका संरचना में .. \ या नीचे तक जब तक आप वांछित एच फ़ाइल तक नहीं पहुंच जाते हैं, जिसे आप शामिल करना चाहते हैं। उदाहरण के लिए। मेरे पास है: ..hardware \ कोर \ cc3200 \ energia.h ..hardware \ पुस्तकालयों \ एसपीआई \ SPI.h

आदेश को फाइल SPI.h कार्यों एक सीपीपी में उपयोग करने के लिए, मैं करने के लिए है जोड़ें: #include <energia.h> पीछा द्वारा #include <..\..\libraries\SPI\SPI.h

0

मैं कुछ इस के साथ एक समस्या हुई। मैं बस एक साधारण समाधान चाहता था और सीपीपी में लाइब्रेरी लिखने का सही तरीका है - मैंने एक स्केच लिया - robo.ino फ़ाइल कहें और इसे एक साधारण लाइब्रेरी में जोड़ा गया - ताकि फ़ोल्डर के तहत लाइब्रेरी में केवल एक फ़ाइल हो रोबोट कहा जाता है - robo.h

├── sketchesfolder 
├── libraries 
│ ├── robot 
│ │ ├── robot.h 
├── robotsketch 
│ ├── Move.ino 

अब मूव में।ino - मैं सिर्फ फ़ाइल

#include <robo.h> 

केवल एक चीज आप साधारण कार्यों के लिए जोड़ने की जरूरत है एक प्रोटोटाइप घोषणा है में शामिल हैं - या सुनिश्चित करें कि आपके कार्यों पहला प्रयोग द्वारा आदेश दिया गया है। robo.h फ़ाइल के सिर पर एक प्रोटोटाइप परिभाषा के रूप में

void halt(int wait); 

यह आपको एक साझा करने के लिए अनुमति देता है: -

इसलिए उदाहरण के लिए तल पर सेटअप() और की तरह एक समारोह रखा एक सीपीपी lib में परिवर्तित किए बिना सामान्य कोड के रूप में स्केच। लेकिन आपको वास्तव में यह करना चाहिए।