Hi there,
I've seen other posts similar to this one, but I'm a complete novice in the use
of Rcpp and couldn't really figure out how to solve the issue.
I'm learning how to use Rcpp before connecting R to some C++ classes I'm
developing.
I started with a simple home made example, but in both cases compiling .cpp and
header files or compiling inline code, I get the same outcome error "unable to
load shared object" and then "Symbol not found" with some characters before and
after my class name.
I've seen Mac OS might have some issues, therefore I tested it also on an
Ubuntu virtual machine, but the result is the same error message.
Also, I'm using an R-devel version here but I'm having the same problem with R
14 as well.
I'll copy below all the relevant information (bit lengthy, I'm sorry).
I'd really appreciate some help here to point me in the right direction.
thanks very much,
Francesco
------case 1 - external files -------------------
PKG_CPPFLAGS=`Rscript -e 'Rcpp:::CxxFlags()'` PKG_LIBS=`Rscript -e
'Rcpp:::LdFlags()'` R CMD SHLIB example.cpp
g++ -arch x86_64 -I/Library/Frameworks/R.framework/Resources/include
-I/Library/Frameworks/R.framework/Resources/include/x86_64 -DNDEBUG
-I/Library/Frameworks/R.framework/Versions/2.16/Resources/library/Rcpp/include
-I/usr/local/include -fPIC -g -O2 -c example.cpp -o example.o
g++ -arch x86_64 -dynamiclib -Wl,-headerpad_max_install_names -undefined
dynamic_lookup -single_module -multiply_defined suppress -L/usr/local/lib -o
example.so example.o
/Library/Frameworks/R.framework/Versions/2.16/Resources/library/Rcpp/lib/x86_64/libRcpp.a
-F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework
-Wl,CoreFoundation
> library(Rcpp)
> library(inline)
> dyn.load("example.so")
Error in dyn.load("example.so") :
unable to load shared object
'/Users/rehbfle/Documents/CPPexercise/RCPP/example.so':
dlopen(/Users/rehbfle/Documents/CPPexercise/RCPP/example.so, 6): Symbol not
found: __ZN7exampleD1Ev
Referenced from: /Users/rehbfle/Documents/CPPexercise/RCPP/example.so
Expected in: flat namespace
in /Users/rehbfle/Documents/CPPexercise/RCPP/example.so
---------case 2 - inline code-----------------------------------------
fx<-cxxfunction(signature(), plugin="Rcpp", include=inc)
Error in dyn.load(libLFile) :
unable to load shared object
'/var/folders/qj/p9_mz7r9661gynb8w88sfbvhy6s5_l/T//RtmpaMinm3/file34b510aaf8e3.so':
dlopen(/var/folders/qj/p9_mz7r9661gynb8w88sfbvhy6s5_l/T//RtmpaMinm3/file34b510aaf8e3.so,
6): Symbol not found: __ZN7exampleC1Eii
Referenced from:
/var/folders/qj/p9_mz7r9661gynb8w88sfbvhy6s5_l/T//RtmpaMinm3/file34b510aaf8e3.so
Expected in: flat namespace
in
/var/folders/qj/p9_mz7r9661gynb8w88sfbvhy6s5_l/T//RtmpaMinm3/file34b510aaf8e3.so
Below the code details:
example.h
-------------------------
#ifndef EXAMPLE_H
#define EXAMPLE_H
class example
{
private:
float resultone;
int resultwo;
public:
example(int x, int y);
~example();
float multiply(int x, int y);
int doublex(int x);
};
#endif
example.cpp
---------------------------
#include "example.h"
#include <Rcpp.h>
using namespace Rcpp;
example::example(int x, int y){}
float example::multiply(int x, int y){
resultone = x * y;
return resultone;
}
int example::doublex(int x){
resultwo = x * 2;
return resultwo;
}
RCPP_MODULE(prova){
class_<example>("example")
.constructor<int,int>()
.method("square", &example::multiply)
.method("doppio", &example::doublex)
;
}
----------inline code----------------
inc <-'using namespace Rcpp;
class example
{
private:
float resultone;
int resultwo;
public:
example(int x, int y);
~example();
float multiply(int x, int y){
resultone = x * y;
return resultone;
}
int doublex(int x){
resultwo = x * 2;
return resultwo;
}
};
RCPP_MODULE(prova){
class_<example>("example")
.constructor<int,int>()
.method("square", &example::multiply)
.method("doppio", &example::doublex)
;
}'
-----------------
> sessionInfo()
R Under development (unstable) (2012-07-02 r59715)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] inline_0.3.8 Rcpp_0.9.13
_______________________________________________
Rcpp-devel mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel