Hi, If you want to compile the code that is here http://dirk.eddelbuettel.com/code/rcpp.armadillo.html directly from R CMD SHLIB, you can do this:
rom...@naxos /tmp $ export PKG_CXXFLAGS=`Rscript -e "RcppArmadillo:::CxxFlags()"` rom...@naxos /tmp $ export PKG_LIBS=`Rscript -e "RcppArmadillo:::LdFlags()"` rom...@naxos /tmp $ R CMD SHLIB armaex.cpp I would however strongly recommend you to have this in a package. Romain Le 26/03/10 19:00, Abhisek a écrit : > Hi Dirk, > > I was referring to this page: > http://dirk.eddelbuettel.com/code/rcpp.armadillo.html > i was trying to run the code there. > > here is my understanding so far (im new to linux and c++ so i apologize > for seeming rather slow!): > 1. The Rcpp package helps C++ and R recognize each others stuff (like > variables). > > 2. The RcppArmadillo package extends this functionality to objects used > in armadillo (such as matrices and vectors e.g. colvec). > > 3. In FastLM, armadillo is being included but not RcppArmadillo. but > that is ok because there is a loop in there which converts an vector as > defined in armadillo to one which Rcpp recognizes. And it is this > vector which which gets passed back to R through the Rcpp interface. > also, it uses cfunction which is different from what im doing here as i > think you mentioned earlier (it worked by the way!) > > what i tried to do was as follows: > a) to run the code as in the link above and include Rcpp and > RcppArmadillo and I was getting the errors as described in my initial post. > b) then i tried the same code but only including Rcpp and armadillo. > > if my reasoning above is correct, part (b) should not run as Rcpp would > not recognize stuff like arma::colvec. but, i get the exact same error > as above! > > so that suggests, that while compiling the code, the compiler is not > even getting to the point in procedure b when it should encounters an > type it doesnt recognize. which means that somehow, armadillo is giving > problems. but that is as far as i can understand. either that or my > understanding is way off. > > appreciate your patience and help! > abhisek > > > > On Fri, Mar 26, 2010 at 4:20 PM, Dirk Eddelbuettel <[email protected] > <mailto:[email protected]>> wrote: > > > On 26 March 2010 at 15:32, Abhisek wrote: > | Hi Dirk, > | > | Just so that I understand. I copied the code in the RcppArmadillo > section > | on your website and pasted and saved it. > > What code? What page? > > | Are you saying I should change > | #include <RcppArmadillo> to #include <Rcpp> and #include <armadillo> ? > > No that is not what I said. I said > > You can't just look at FastLM() and think your code will run > like it. > RcppArmadillo __does not export its classes__. It is an > implementation > reference -- it gives you guidance as to how to implement C++ > packages of > your own against other libraries. > > If you "just" want to use Armadillo and have Rcpp help you, look > at the > installed example 'FastLM' in the Rcpp package. In other words > ignore > RcppArmadillo for now. > > So look at /usr/local/lib/Rcpp/examples/FastLM/ and the files there. > Run > > fastLMviaArmadillo.r > > and look at it. That should work. > > You can also look at the _entire RcppArmadillo package_ and see how the > pieces fit together, including src/Makevars. > > But don't just take semi-random shortcuts and expect that to work. If we > could make it any simpler, we would. There is a reason RcppArmadilli is > package and not just a file. > > Dirk > > | best, > | abhisek > | > | On Fri, Mar 26, 2010 at 1:40 PM, Dirk Eddelbuettel <[email protected] > <mailto:[email protected]>> wrote: > | > | > > | > Hi Abhisek, > | > > | > On 26 March 2010 at 12:28, Abhisek wrote: > | > | I downloaded the stuff just last friday so it should be the latest > | > version > | > | of Rcpp as well as Armadillo. I used install.packages() for > Rcpp and > | > | RcppArmadillo. Armadillo is 0.9.4. Im using xubuntu karmic > koala. > | > > | > Ok, that is all good. And if RcppArmadillo installed you have > proper > | > libraries, Armadillo included. > | > > | > I think part of your problem is a misunderstanding of an issue > we may not > | > have made particularly clear: You can't just look at FastLM() > and think > | > your code will run like it. RcppArmadillo __does not export its > classes__. > | > It is an implementation reference -- it gives you guidance as to > how to > | > implement C++ packages of your own against other libraries. > | > > | > If you "just" want to use Armadillo and have Rcpp help you, look > at the > | > installed example 'FastLM' in the Rcpp package. In other words > ignore > | > RcppArmadillo for now. > | > > | > The example (in 0.7.10) uses an idiom we no longer like and I am > about to > | > change that for an upcoming 0.7.11 release, but it should works > as is and > | > just use inline -- so no messing with makefile etc. > | > > | > Try that and see how it goes and keep us posted. > | > > | > Cheers, Dirk > | > > | > > | > | i also had some problem using Armadillo which I posted on the > Armadillo > | > | discussion board. Conrad got back to me. Here is the discussion: > | > | https://sourceforge.net/apps/phpbb/arma/viewtopic.php?f=1&t=4 > <https://sourceforge.net/apps/phpbb/arma/viewtopic.php?f=1&t=4> > | > | > | > | so it may be that armadillo is the problem but im really not sure. > | > | > | > | Many thanks > | > | Abhisek > | > | > | > | On Fri, Mar 26, 2010 at 12:17 PM, Dirk Eddelbuettel > <[email protected] <mailto:[email protected]>> > | > wrote: > | > | > | > | > > | > | > (resending, this time to list I omitted last time, sorry. > --Dirk) > | > | > > | > | > On 26 March 2010 at 11:10, Abhisek wrote: > | > | > | Hi, > | > | > | > | > | > | Ive been trying to make RcppArmadillo work using the > example file > | > | > (fastLM). > | > | > | I copied and pasted the code and saved it as > RcppArmadilloEg.cpp (not > | > to > | > | > use > | > | > | fastLM but to figure out how to work RcppArmadillo). Then > i tried > | > using > | > | > the > | > | > | command R CMD SHLIB RcppArmadilloEg.cpp but an error came > up saying > | > that > | > | > | RcppArmadillo.h not found. > | > | > | > | > | > | So i tried doing a symbolic link from /usr/local/include > to the > | > directory > | > | > | where RcppArmadillo.h and RcppArmadilloDefines.h is > stored. I also > | > did a > | > | > | symbolic link analogously for RcppArmadillo.so. When i > ran R CMD > | > SHLIB > | > | > | again I got the following error: > | > | > | > | > | > | abhi...@shieks:~/Desktop/Personal/Test$ R CMD SHLIB > | > RcppArmadilloEg.cpp > | > | > | g++ -I/usr/share/R/include > | > | > | -I/home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib > -fpic -g > | > -O2 > | > | > -c > | > | > | RcppArmadilloEg.cpp -o RcppArmadilloEg.o > | > | > > | > | > So far so good: one -I for R as usual, one for Rcpp. > | > | > > | > | > | In file included from > | > | > | > | > > /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/RcppCommon.h:215, > | > | > | from > | > | > | > /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/Rcpp.h:28, > | > | > | from RcppArmadilloEg.cpp:1: > | > | > | > | > | > > | > > > /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/Rcpp/internal/wrap.h: > | > | > | In function ‘SEXPREC* > | > | > Rcpp::internal::wrap_dispatch_unknown_iterable(const > | > | > | T&, Rcpp::traits::false_type) [with T = arma::Col<double>]’: > | > | > | > | > | > > | > > > /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/Rcpp/internal/wrap.h:491: > | > | > | instantiated from ‘SEXPREC* > | > Rcpp::internal::wrap_dispatch_unknown(const > | > | > T&, > | > | > | Rcpp::traits::false_type) [with T = arma::Col<double>]’ > | > | > | > | > | > > | > > > /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/Rcpp/internal/wrap.h:509: > | > | > | instantiated from ‘SEXPREC* > | > | > | Rcpp::internal::wrap_dispatch_unknown_importable(const T&, > | > | > | Rcpp::traits::false_type) [with T = arma::Col<double>]’ > | > | > | > | > | > > | > > > /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/Rcpp/internal/wrap.h:526: > | > | > | instantiated from ‘SEXPREC* > Rcpp::internal::wrap_dispatch(const T&, > | > | > | Rcpp::traits::wrap_type_unknown_tag) [with T = > arma::Col<double>]’ > | > | > | > | > | > > | > > > /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/Rcpp/internal/wrap.h:541: > | > | > | instantiated from ‘SEXPREC* Rcpp::wrap(const T&) [with T = > | > | > | arma::Col<double>]’ > | > | > | > | > > /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/Rcpp/Named.h:54: > | > | > | instantiated from ‘Rcpp::Named::Named(const std::string&, > const T&) > | > [with > | > | > T > | > | > | = arma::colvec]’ > | > | > | RcppArmadilloEg.cpp:19: instantiated from here > | > | > | > | > | > > | > > > /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/Rcpp/internal/wrap.h:394: > | > | > | error: cannot convert ‘const arma::Col<double>’ to > ‘SEXPREC*’ in > | > | > | initialization > | > | > | make: *** [RcppArmadilloEg.o] Error 1 > | > | > | > | > | > | > | > | > | could someone provide some advice? > | > | > > | > | > Which Rcpp version do you have installed? > | > | > > | > | > Which Armadillo version do you have installed? > | > | > > | > | > I have not tried the free-floating direct compile you try > here. Maybe > | > the > | > | > defines for RcppArmadillo that we use are missing here -- > hard to say. > | > | > > | > | > Could you try to create your own little package but copying the > | > | > RcppArmadillo > | > | > files, changes DESCRIPTION to what you do and changes the > FastLM code > | > in > | > | > C++ > | > | > and R? > | > | > > | > | > Dirk > | > | > > | > | > -- > | > | > Registration is open for the 2nd International conference R > / Finance > | > 2010 > | > | > See http://www.RinFinance.com for details, and see you in > Chicago in > | > | > April! > | > | > > | > > | > -- > | > Registration is open for the 2nd International conference R / > Finance > | > 2010 > | > See http://www.RinFinance.com for details, and see you in > Chicago in > | > April! > | > > > -- > Registration is open for the 2nd International conference R / > Finance 2010 > See http://www.RinFinance.com for details, and see you in Chicago > in April! > > > > > _______________________________________________ > Rcpp-devel mailing list > [email protected] > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel -- Romain Francois Professional R Enthusiast +33(0) 6 28 91 30 30 http://romainfrancois.blog.free.fr |- http://tr.im/OIXN : raster images and RImageJ |- http://tr.im/OcQe : Rcpp 0.7.7 `- http://tr.im/O1wO : highlight 0.1-5 _______________________________________________ Rcpp-devel mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
