[Rcpp-devel] RcppArmadillo error
Romain Francois
romain at r-enthusiasts.com
Tue Mar 30 08:15:05 CEST 2010
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:
romain at naxos /tmp $ export PKG_CXXFLAGS=`Rscript -e
"RcppArmadillo:::CxxFlags()"`
romain at naxos /tmp $ export PKG_LIBS=`Rscript -e "RcppArmadillo:::LdFlags()"`
romain at 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 <edd at debian.org
> <mailto:edd at debian.org>> 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 <edd at debian.org
> <mailto:edd at debian.org>> 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
> <edd at debian.org <mailto:edd at debian.org>>
> | > 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:
> | > | > |
> | > | > | abhisek at 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
> Rcpp-devel at lists.r-forge.r-project.org
> 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
More information about the Rcpp-devel
mailing list