मैं टेस्ट चरण में एक नेटवर्क कॉन्फ़िगरेशन लोड करने की कोशिश कर रहा हूं जिसमें पहले मेमोरी डेटा परत है और फिर एक रूपांतरण परत है। MemoryData परत निर्माण सफल होता है, लेकिन घुमाव परत की रचना निम्नलिखित स्थान पर विफल रहता है:कैफी परत निर्माण विफलता
LOG(INFO) << "Creating layer " << param.name();
const string& type = param.type();
CreatorRegistry& registry = Registry();
CHECK_EQ(registry.count(type), 1) << "Unknown layer type: " << type
<< " (known types: " << LayerTypeList() << ")";
मुद्रित त्रुटि है:
F0519 14: 54: 14,504 १२.४,९४,१३९ layer_factory.hpp: 77] की जांच विफल : registry.count (टी ype) == 1 (0 बनाम 1) अज्ञात परत के प्रकार: कनवल्शन (ज्ञात प्रकार: MemoryData)
रजिस्ट्री एम के साथ केवल एक प्रविष्टि, वास्तव में है emoryData। जब रजिस्ट्री निर्माण कार्यों में कदम है, यह ऐसा लगता है जैसे (और पिछले के बाद से यह एक singletone है) लग रहा है पहले
REGISTER_LAYER_CLASS(MemoryData);
memory_data_later.cpp में से बुलाया।
मुझे अन्य समर्थित परतों के लिए समान REGISTER_LAYER_CLASS
कॉल दिखाई देता है, लेकिन ऐसा लगता है कि उन्हें कभी नहीं कहा जाता है। मैं इसे कैसे हल कर सकता हूं?
धन्यवाद!
यह बिल्कुल सही था। मैंने पहली बार लिंकर को "अप्रयुक्त" (= लगभग सभी परतें) ओबीजे फाइलों को एक हैकी बदसूरत तरीके से शामिल करने के लिए मजबूर कर दिया - आपका सुझाव निश्चित रूप से यहां करने के लिए सही चीज़ है। धन्यवाद! – rkellerm
आईओएस में डायनामिक लाइब्रेरी का समर्थन नहीं किया। मैंने कैफे के लिए स्थिर lib बनाया। मुझे आईओएस में त्रुटि से ऊपर मिला। आपने इस त्रुटि को कैसे हल किया। – balajichinna
@balajichinna: उदाहरण के लिए, आप एक हेडर फ़ाइल में एक डमी फ़ंक्शन को प्रोटोटाइप कर सकते हैं (उदाहरण के लिए layer_factory.hpp), इसे उस सीपीपी में कार्यान्वित करना जो उसका कोड लिंक नहीं है (उदाहरण के लिए layer_factory.cpp, और इसे हेडर के भीतर स्थिर रूप से कॉल करना, इसे प्रोटोटाइप किया गया था। उदाहरण के लिए: layer_factory.hpp: int lf_foo(); static int lf_dummy = lf_foo(); layer_factory.cpp में: int lf_foo() {return 0;}। बदसूरत, लेकिन काम करता है। – rkellerm