Howdy, I'm working with some external code written in C++, which I would like to call via dyn.load() and .C() from R. The function prototype looks like: gaRemin(int *, float *, float *, int *, float *, float *, float *, float *, float *) but to call this function from R using .C() I have had to use the mangled version of this function name, gaRemin__FPiPfT1T0T1N41 Is using the mangled name my best option, or is there some way that R knows to interpret unmangled function names from C++ shared library objects? I'm concerned about portability of the resultant code in the case that name-mangling is handled differently from platform to platform. This is Linux, Redhat 7.2 with g++-2.96. Thanks for any help you can offer, Andy -- Andy Jacobson arj at gfdl.gov Program in Atmospheric and Oceanic Sciences Sayre Hall, Forrestal Campus Princeton University PO Box CN710 Princeton, NJ 08544-0710 USA Tel: 609/258-5260 Fax: 609/258-2850 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
Enclose the interface function, in your case gaRemin with extern "C" statement like this: extern "C" { gaRemin(int *, float *, float *, int *, float *, float *, float *, float *, float *) { ... } } Also, look at the "Writing R Extensions" manual in R help, specifically the chapter "System and foreign language interfaces", section "Interfacing C++ code", for more information. peter On Wed, 2002-10-02 at 10:06, Andy Jacobson wrote:> Howdy, > > I'm working with some external code written in C++, which I > would like to call via dyn.load() and .C() from R. The > function prototype looks like: > > gaRemin(int *, float *, float *, int *, float *, float *, > float *, float *, float *) > > but to call this function from R using .C() I have had to use > the mangled version of this function name, > > gaRemin__FPiPfT1T0T1N41 > > Is using the mangled name my best option, or is there some way > that R knows to interpret unmangled function names from C++ > shared library objects? > > I'm concerned about portability of the resultant code in the > case that name-mangling is handled differently from platform > to platform. > > This is Linux, Redhat 7.2 with g++-2.96. > > Thanks for any help you can offer, > > Andy > > -- > Andy Jacobson > > arj at gfdl.gov > > Program in Atmospheric and Oceanic Sciences > Sayre Hall, Forrestal Campus > Princeton University > PO Box CN710 Princeton, NJ 08544-0710 USA > > Tel: 609/258-5260 Fax: 609/258-2850 > -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- > r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html > Send "info", "help", or "[un]subscribe" > (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch > _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
Andy Jacobson <andyj at splash.princeton.edu> writes:> Howdy, > > I'm working with some external code written in C++, which I > would like to call via dyn.load() and .C() from R. The > function prototype looks like: > > gaRemin(int *, float *, float *, int *, float *, float *, > float *, float *, float *) > > but to call this function from R using .C() I have had to use > the mangled version of this function name, > > gaRemin__FPiPfT1T0T1N41 > > Is using the mangled name my best option, or is there some way > that R knows to interpret unmangled function names from C++ > shared library objects? > > I'm concerned about portability of the resultant code in the > case that name-mangling is handled differently from platform > to platform. > > This is Linux, Redhat 7.2 with g++-2.96. > > Thanks for any help you can offer, > > Andy > > -- > Andy Jacobson > > arj at gfdl.gov > > Program in Atmospheric and Oceanic Sciences > Sayre Hall, Forrestal Campus > Princeton University > PO Box CN710 Princeton, NJ 08544-0710 USA > > Tel: 609/258-5260 Fax: 609/258-2850 > -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- > r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html > Send "info", "help", or "[un]subscribe" > (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch > _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._