[Rcpp-devel] dyn.load error - symbol not found - expected in: flat namespace

Douglas Bates bates at stat.wisc.edu
Wed Jul 18 18:47:22 CEST 2012


One way forward is to use a program like c++filt to demangle the name
that is not found.  It is

re2::RE2::Arg::parse_float(char const*, int, void*)

On Wed, Jul 18, 2012 at 11:18 AM, Lescai, Francesco <f.lescai at ucl.ac.uk> wrote:
> I'm still having this problem.
> I progressively increased the complexity of my code, because my ultimate
> goal is to integrate a series of C++ classes to perform some functions
> external to R.
>
> My test examples worked well, and I just noticed in order to generate the
> shared object I have to compile together all the classes connected to each
> others, like this.
> PKG_CPPFLAGS=`Rscript -e 'Rcpp:::CxxFlags()'` PKG_LIBS=`Rscript -e
> 'Rcpp:::LdFlags()'` R CMD SHLIB ClassFive.cpp ClassOne.cpp ClassTwo.cpp
> ClassThree.cpp ClassFour.cpp
>
> When I finally compiled my real code, I didn't get any compilation error,
> but I still got from within R the error message:
> Error in dyn.load("ClassFive.so") :
>   unable to load shared object [...]
> Symbol not found: __ZN3re23RE23Arg11parse_floatEPKciPv
>
> I checked for the issues that generated the same problem before, i.e.
> constructor and deconstructors, and they are all ok.
> I couldn't find any explicit call to "parse_float" which seems to be
> reported in the error message.
> To start, I linked only one class to R and one method only of the very same
> class.
>
> I understand it might be quite difficult to identify the specific problem
> without going through lots of code (I have now 5 different classes, each
> with several methods).
> Is there a number of possible mistakes leading to such kind of messages,
> that could help me narrow down the cause?
>
> Thanks very much for any help,
> Francesco
>
>
> ------------
>> sessionInfo()
> R version 2.15.1 (2012-06-22)
> 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
>
> loaded via a namespace (and not attached):
> [1] tcltk_2.15.1 tools_2.15.1
>
>
>
>
> On 6 Jul 2012, at 15:50, Lescai, Francesco wrote:
>
> 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
>
> Rcpp-devel at lists.r-forge.r-project.org
>
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>
>
>
>
>
> _______________________________________________
> 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
>
>
> ---------------------------------------------------------------------------------
> Francesco Lescai, PhD, EDBT
> Senior Research Associate in Genome Analysis
> University College London
> Faculty of Population Health Sciences
> Dept. Genes, Development & Disease
> ICH - Molecular Medicine Unit, GOSgene team
> 30 Guilford Street
> WC1N 1EH London UK
>
> email: f.lescai at ucl.ac.uk
> phone: +44.(0)207.905.2274
> [ext: 2274]
> --------------------------------------------------------------------------------
>
>
> _______________________________________________
> 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


More information about the Rcpp-devel mailing list