मैं पैकेज बनाने के लिए आरसीपीपी का उपयोग करके आर पैकेज में ओपनसीवी से कुछ कोड का उपयोग करने की कोशिश कर रहा हूं। जब मैं अपनी मशीन पर सी कोड संकलित करता हूं, तो यह ठीक काम करता है।जब मैं पैकेज में उपयोग किए जाने वाले सी ++ कोड को संकलित कर रहा हूं तो मैं आर को झंडे कैसे पास कर सकता हूं?
उदाहरण के लिए, मैं निम्न सिंटैक्स का उपयोग कर रहा स्थानीय स्तर पर facedetect.cpp कोड संकलित करने के लिए:
g++ `pkg-config --cflags opencv` facedetect.cpp -o facedetect `pkg-config --libs opencv`
हालांकि, जब मैं निम्न आदेश का उपयोग कर अपने पैकेज में शामिल करने का प्रयास करें:
R CMD SHLIB facedetect.cpp -o facedetect
साथ निम्नलिखित मेरी makevars फाइल में परिभाषित:
PKG_CPPFLAGS= `$(R_HOME)/bin/Rscript -e 'Rcpp:::CxxFlags()'`
PKG_LIBS = `$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()"`
PKG_CXXFLAGS= `pkg-config --cflags opencv` `pkg-config --libs opencv`
आर वें कार्यान्वित ई निम्नलिखित:
g++ -arch x86_64 -I/Library/Frameworks/R.framework/Resources/include -I/Library/Frameworks/R.framework/Resources/include/x86_64 `pkg-config --cflags opencv` `pkg-config --libs opencv` `/Library/Frameworks/R.framework/Resources/bin/Rscript -e 'Rcpp:::CxxFlags()'` -I/usr/local/include -fPIC -g -O2 -c facedetect.cpp -o facedetect.o
जो मुझे निम्न त्रुटि संदेश देता है:
i686-apple-darwin10-g++-4.2.1: -lopencv_core: linker input file unused because linking not done
i686-apple-darwin10-g++-4.2.1: -lopencv_imgproc: linker input file unused because linking not done
i686-apple-darwin10-g++-4.2.1: -lopencv_highgui: linker input file unused because linking not done
i686-apple-darwin10-g++-4.2.1: -lopencv_ml: linker input file unused because linking not done
i686-apple-darwin10-g++-4.2.1: -lopencv_video: linker input file unused because linking not done
i686-apple-darwin10-g++-4.2.1: -lopencv_features2d: linker input file unused because linking not done
i686-apple-darwin10-g++-4.2.1: -lopencv_calib3d: linker input file unused because linking not done
i686-apple-darwin10-g++-4.2.1: -lopencv_objdetect: linker input file unused because linking not done
i686-apple-darwin10-g++-4.2.1: -lopencv_contrib: linker input file unused because linking not done
i686-apple-darwin10-g++-4.2.1: -lopencv_legacy: linker input file unused because linking not done
i686-apple-darwin10-g++-4.2.1: -lopencv_flann: linker input file unused because linking not done
g++ -arch x86_64 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/usr/local/lib -o facedetect facedetect.o -I/opt/local/include/opencv -I/opt/local/include -L/opt/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
मैं, ये त्रुटि संदेश समझ में नहीं आता है क्योंकि मैं सी के साथ पर्याप्त अनुभव नहीं है ++। क्या कोई जानता है कि सी ++ कोड को संकलित करने के लिए आर को कैसे प्राप्त करें क्योंकि मेरे स्थानीय जी ++ कंपाइलर करता है? मुझे यकीन नहीं है कि "-c" ध्वज समस्या है ... दुर्भाग्यवश मुझे Google या Writing R एक्सटेंशन मैन्युअल के माध्यम से उत्तर नहीं मिला। धन्यवाद!
पिछले उत्तरदाताओं के लिए धन्यवाद जिन्होंने मुझे झंडे के साथ शुरुआती समस्याओं का पता लगाने में मदद की।
आपका शीर्षक सी ++ कहता है, लेकिन सवाल सी कहता है, यह कौन है? – Puppy
यह सी ++ है, धन्यवाद। – Solomon