Hi Prof Ripley,

Thanks for the response & the use of the correct terminology. I've checked the environment variables & there is none set called CC.

The .dll was definitely compiled using R CMD SHLIB. I'm not quite sure what output you're referring to but at the command prompt when I enter:

...\bin> R CMD SHLIB summariseMCMC.C

I get the output:

g++ -I"C:/R/R-2.11.1/include" -02 -Wall summariseMCMC.c summariseMCMC.o g++ -shared -s -static-libgcc -o summariseMCMC.dll tmp.def summariseMCMC.0 -LC:/R/R-2.11.1/bin -1R

Please let me know if I can try anything different provide any more useful output.

Another source file I have (runUniformMCMC.C) compiles & runs perfectly using the same approach, so I'm rather perplexed as to why this one gets it's name mangled. It originally had actual code in it that did useful things, but I stripped it back while I was trying to figure out what is happening.

Thanks again,

Steve


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<R.h>
#include<Rdefines.h>
#include<Rinternals.h>

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.1252
[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@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@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.

Reply via email to