Hi list,

I am writing a Rcpp function (referred as f2). To be able to debug it, I am currently using inline to write f2. f2 uses a function that I've wrote and is now part of a package that I have made (referred as f1). f1 is an Rcpp function that is not called within R but only called from Rcpp functions. I was wondering how I could use this f1 function within f2 when using inline. From what I understand I should be able to use the argument includes from cxxfunction. I think it is related to this thread:
http://thread.gmane.org/gmane.comp.lang.r.rcpp/2593/focus=2600
But I can't quite figure out.

Here is a small example:

library(inline)
library(fxwithinfx) # My package that contain f1

src <- '
  using namespace Rcpp;
  double y = 9;
  NumericVector z(1);

  f1(y, z);
  z[0] = z[0] + 1;
  return z;
  '
f2 <- cxxfunction(signature(), body = src, plugin = "Rcpp", includes = "#include <fxwithinfx/f1.h>")

# I get the following error:

Error in compileCode(f, code, language = language, verbose = verbose) :
  Compilation ERROR, function(s)/method(s) not created! 
file11741d6932c4.cpp:19:27: fatal error: fxwithinfx/f1.h: No such file or 
directory
compilation terminated.
# I tried to change the reference to f1.h by changing the path, but whatever 
path I give I still get an error. For example, if I use this instead:
f2<- cxxfunction(signature(),  body = src, plugin = "Rcpp",
                     includes = 
"#include<C:/Users/Marie/Documents/R/fxwithinfx/src/f1.h>")
# I get the following error:

Error in compileCode(f, code, language = language, verbose = verbose) :
  Compilation ERROR, function(s)/method(s) not created! 
file11743a6031d8.o:file11743a6031d8.cpp:(.text+0x104): undefined reference to 
`f1'
collect2: ld returned 1 exit status

# I'm actually not sure whether I should refer the actual .h location or to the 
location within my R libraries

# Here are the header and  src codes for the f1

f1.h:

#ifndef _fxwithinfx_f1_H
#define _fxwithinfx_f1_H

#include<Rcpp.h>

extern "C" int f1(double y, SEXP z) ;

#endif


f1.cpp:

#include "f1.h"

int f1(double y, SEXP z){
  using namespace Rcpp;

  NumericVector zz(z);
  zz[0] = y + 1.5;
}



Any help will be appreciated!

Marie

_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to