[Rcpp-devel] R very basic compilation error

Kevin Ushey kevinushey at gmail.com
Thu Feb 14 08:33:22 CET 2013


Could it be because the file extension is .c rather than the expected .cpp?
Compiling the code runs fine for me when the file extension is .cpp, but I
get the same errors as you with the file extension as .c .

-Kevin

On Wed, Feb 13, 2013 at 11:15 PM, Bharath Govindarajan <
bharath.quant at gmail.com> wrote:

> Hi,
>
> At the outset I would like to thank the developers of rcpp for this
> wonderful tool. My question
> is elementary but I am posting it here only because on stack exchange I
> see Dirk suggesting that
> this is a better place to get replies.
>
> Thanks again
> Bharath
>
>
>
> Places I searched so far :
> -------------------------------------
> google , stack exchange :
> " rcpp compilation error __attribute__ "
> " rcpp Reference.h:25 error"
> " rcpp asm error"
>
>
>
> > version
>                _
> platform       x86_64-unknown-linux-gnu
> arch           x86_64
> os             linux-gnu
> system         x86_64, linux-gnu
> status
> major          2
> minor          15.1
> year           2012
> month          06
> day            22
> svn rev        59600
> language       R
> version.string R version 2.15.1 (2012-06-22)
> nickname       Roasted Marshmallows
>
> Description of problem:
> --------------------------------
> I tried a very simple example from Hadley Wickham's website and it worked
> https://github.com/hadley/devtools/wiki/Rcpp
>
> cppFunction('
>   double sumC(NumericVector x) {
>     int n = x.size();
>     double total = 0;
>     for(int i = 0; i < n; ++i) {
>       total += x[i];
>     }
>     return total;
>   }
> ')
>
> Then I try an example written in a c source file from
> http://dirk.eddelbuettel.com/blog/2012/11/14/
>  and source it and get compilation errors
>
> test1.c
> ------
> #include <Rcpp.h>
>
> // [[Rcpp::export]]
> Rcpp::DataFrame mypnorm(Rcpp::NumericVector x) {
>     int n = x.size();
>     Rcpp::NumericVector y1(n), y2(n), y3(n);
>
>     for (int i=0; i<n; i++) {
>
>         // the way we used to do this
>         y1[i] = ::Rf_pnorm5(x[i], 0.0, 1.0, 1, 0);
>
>         // the way we can do it now
>         y2[i] = R::pnorm(x[i], 0.0, 1.0, 1, 0);
>
>     }
>     // or using Rcpp sugar in one go
>     y3 = Rcpp::pnorm(x);
>
>     return Rcpp::DataFrame::create(Rcpp::Named("Rold")  = y1,
>                                    Rcpp::Named("Rnew")  = y2,
>                                    Rcpp::Named("sugar") = y3);
> }
>
> commands:
> ---------
> sourceCpp(LIB.PATH %+% "test1.c",verbose=TRUE)
>
> Error:
> ------
>
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp/internal/wrap_end.h:25:
> error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Rcpp'
> In file included from
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp/api/meat/meat.h:25,
>                  from
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp.h:81,
>                  from test1.c:1:
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp/api/meat/RObject.h:25:
> error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Rcpp'
> In file included from
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp/api/meat/meat.h:26,
>                  from
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp.h:81,
>                  from test1.c:1:
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp/api/meat/Environment.h:25:
> error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Rcpp'
> In file included from
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp/api/meat/meat.h:27,
>                  from
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp.h:81,
>                  from test1.c:1:
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp/api/meat/DottedPair.h:25:
> error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Rcpp'
> In file included from
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp/api/meat/meat.h:28,
>                  from
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp.h:81,
>                  from test1.c:1:
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp/api/meat/Vector.h:25:
> error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Rcpp'
> In file included from
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp/api/meat/meat.h:29,
>                  from
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp.h:81,
>                  from test1.c:1:
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp/api/meat/Matrix.h:25:
> error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Rcpp'
> In file included from
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp/api/meat/meat.h:30,
>                  from
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp.h:81,
>                  from test1.c:1:
> R/x86_64-unknown-linux-gnu-library/2.15/Rcpp/include/Rcpp/api/meat/Reference.h:25:
> error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Rcpp'
> test1.c:4: error: expected '=', ',', ';', 'asm' or '__attribute__' before
> ':' token
> test1.c:28: error: expected identifier or '(' before string constant
> make: *** [test1.o] Error 1
> Error in sourceCpp(LIB.PATH %+% "test1.c", verbose = TRUE) :
>   Error 1 occurred building shared library.
>
>
>
> _______________________________________________
> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20130213/037e6786/attachment-0001.html>


More information about the Rcpp-devel mailing list