[R] R CMD SHLIB changes function name when compiling

Mike Marchywka marchywka at hotmail.com
Fri Oct 8 16:57:31 CEST 2010










----------------------------------------
> Date: Sat, 9 Oct 2010 01:21:47 +1030
> From: stephen.pederson at adelaide.edu.au
> To: ripley at stats.ox.ac.uk
> CC: r-help at r-project.org
> Subject: Re: [R] R CMD SHLIB changes function name when compiling
>
> I think I should also add that I have compiled R from source so am
> pretty confident that I have the correct set of Rtools.

Assuming the problem is name mangling or symbol export,
how about "extern "C" ? I haven't done this lately my memory
is bad but quick goog search suggests this is the header and IIRC
it sound about right.


>
>
> On 8/10/2010 8:06 PM, Prof Brian Ripley wrote:
> > On Fri, 8 Oct 2010, Steve Pederson wrote:
> >
> >> Hi,
> >>
> >> I'm trying to write a function in C for implementation with .Call.
> >> When compiling using R CMD SHLIB characters seem to be added to the
> >> function name.
> >>
> >> Here's the complete C code from the file summariseMCMC.c:
> >>
> >> #include
> >> #include
> >> #include
> >>
> >> void summariseMCMC(SEXP data) {
> >>
> >> PROTECT(data=AS_NUMERIC(data));
> >> UNPROTECT(1);
> >>
> >> }
> >>
> >> Then after compiling (R CMD SHLIB summariseMCMC.c) & loading the .dll
> >>
> >> dyn.load("C:/R/R-2.11.1/bin/summariseMCMC.dll")
> >> is.loaded("_Z13summariseMCMCP7SEXPREC")
> >> [1] TRUE
> >> is.loaded("summariseMCMC")
> >> [1] FALSE
> >>
> >> Just wondering if anyone had any pointers for getting rid of this, or
> >> have I missed something outrageously obvious?
> >
> > You have. This was not done by'R CMD SHLIB', but by a C++ compiler -- it
> > is called 'name mangling'. Unfortunately you didn't show us the output
> > from that command, when the cause would probably have been 'outrageously
> > obvious'.
> >
> > The fix is to make sure you use a C compiler to compile C code, and
> > we've almost no idea why that is not being done on your system.
> > But as a guess, check that the environment variable CC is not set.
> >
> >>
> >> Thanks,
> >>
> >> Steve
> >>
> >>
> >> sessionInfo()
> >> R version 2.11.1 (2010-05-31)
> >> i386-pc-mingw32
> >>
> >> locale:
> >> [1] LC_COLLATE=English_Australia.1252 LC_CTYPE=English_Australia.1
> >> [3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C
> >> [5] LC_TIME=English_Australia.1252
> >>
> >> attached base packages:
> >> [1] stats graphics grDevices utils datasets methods base
> >>
> >> other attached packages:
> >> [1] limma_3.4.4 Biobase_2.8.0 aroma.affymetrix_1.7.0
> >> [4] aroma.apd_0.1.7 affxparser_1.20.0 R.huge_0.2.0
> >> [7] aroma.core_1.7.0 aroma.light_1.16.0 matrixStats_0.2.1
> >> [10] R.rsp_0.3.6 R.cache_0.3.0 R.filesets_0.8.3
> >> [13] digest_0.4.2 R.utils_1.4.4 R.oo_1.7.3
> >> [16] R.methodsS3_1.2.0
> >>
> >> loaded via a namespace (and not attached):
> >> [1] tools_2.11.1
> >>
> >> ______________________________________________
> >> R-help at r-project.org mailing list
> >> https://stat.ethz.ch/mailman/listinfo/r-help
> >> PLEASE do read the posting guide
> >> http://www.R-project.org/posting-guide.html
> >> and provide commented, minimal, self-contained, reproducible code.
> >>
> >
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
 		 	   		  


More information about the R-help mailing list