Argh.. Apologies guys.. Found the error myself.
Constructor and deconstructor must be specified with {} even if no code is 
foreseen for them.

A novice error, hope at least highlighting it could be useful to other newbies 
like me :-)

cheers,
Francesco


On 6 Jul 2012, at 15:37, Lescai, Francesco wrote:

> 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
> 



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

Reply via email to