例如,我在本地使用以下语法来编译facesetect.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`
R执行以下 *** 作:
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 donei686-apple-darwin10-g++-4.2.1: -lopencv_imgproc: linker input file unused because linking not donei686-apple-darwin10-g++-4.2.1: -lopencv_highgui: linker input file unused because linking not donei686-apple-darwin10-g++-4.2.1: -lopencv_ml: linker input file unused because linking not donei686-apple-darwin10-g++-4.2.1: -lopencv_vIDeo: linker input file unused because linking not donei686-apple-darwin10-g++-4.2.1: -lopencv_features2d: linker input file unused because linking not donei686-apple-darwin10-g++-4.2.1: -lopencv_calib3d: linker input file unused because linking not donei686-apple-darwin10-g++-4.2.1: -lopencv_objdetect: linker input file unused because linking not donei686-apple-darwin10-g++-4.2.1: -lopencv_contrib: linker input file unused because linking not donei686-apple-darwin10-g++-4.2.1: -lopencv_legacy: linker input file unused because linking not donei686-apple-darwin10-g++-4.2.1: -lopencv_flann: linker input file unused because linking not doneg++ -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经验.有没有人知道如何让R编译C代码,就像我本地的g编译器一样?我不知道“-c”标志是否是问题…不幸的是,我无法通过谷歌或“写入R扩展”手册找到答案.谢谢!
感谢以前的回复者,帮助我弄清楚我在旗帜上遇到的初步问题.
解决方法 您需要将一个Makevars-file放入您的src目录,并指定PKG_CPPFLAGS(预处理程序和包含)和PKG_CXXFLAGS(编译器标志).详细信息请参见“编写R扩展”中的第1.2.1和5.5节. 总结以上是内存溢出为你收集整理的当编译要在包中使用的C代码时,如何将标志传递给R?全部内容,希望文章能够帮你解决当编译要在包中使用的C代码时,如何将标志传递给R?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)