I'm not an expert, but from what I know you should certainly use the
.Call interface when you define a function as you did. The problem is
that your function must return a value (of type SEXP) which it does
not. If you don't return a value, all bets are off as to what will
happen, and if the internal R code uses a pointer to the result of
your function, you can easily get memory map errors.
HTH,
Peter
On Fri, Nov 9, 2012 at 2:31 PM, niandra wrote:
> i'm using the following c++ code
> using namespace std;
> #include
> #include
> #include
> #include
> #include
> #include
> #include
> #include
> #include
> #include
>
> extern "C" {
> SEXP FiltroGaus(SEXP size1_r, SEXP size2_r, SEXP sigma_r) {
>
> int size1 = INTEGER(size1_r)[0];
> int size2 = INTEGER(size2_r)[0];
> double sigma = REAL(sigma_r)[0];
>
> }
> }
>
> The compilation go without errors but when in R i type
> .C("FiltroGaus",3,3,2)
> the message is: Errore: INTEGER() can only be applied to a 'integer', not a
> 'NULL'
> if i type .C("FiltroGaus",as.integer(3),as.integer(3),as.double(2))
> the message is Errore: INTEGER() can only be applied to a 'integer', not a
> 'closure'
>
> while if i type .Call("FiltroGaus",as.integer(3),as.integer(3),as.double(2))
> the message is
> NULL
>
> *** caught segfault ***
> address 0x20be, cause 'memory not mapped'
>
> Possible actions:
> 1: abort (with core dump, if enabled)
> 2: normal R exit
> 3: exit R without saving workspace
> 4: exit R saving workspace
>
>
> I now, i need to study and i know also for sure the answer is in some book
> (i have lot). I swear i read a lot and i'm still reading, but i really need
> help :)
>
>
>
> --
> View this message in context:
> http://r.789695.n4.nabble.com/Crash-cause-memory-not-mapped-tp4649141.html
> Sent from the R devel mailing list archive at Nabble.com.
>
> __
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel