It is a bit different on Windows, since it is making a DLL and GNU ld has lots of special-casing for those.
To see how to do it, look at the standard package 'stats'. That has a .def file and it works. The naming convention is probably what you missed. (Also, things have changed since R 2.2.1.) On Mon, 5 Feb 2007, Andrew Piskorski wrote: > On Mon, Feb 05, 2007 at 01:28:24AM -0800, Vladimir Eremeev wrote: >> I am writing binding from C library to R. >> I use R 2.4.1, windows XP, and MinGW. > >> R CMD SHLIB -d --output=Rsnns.dll [ list of all C sources] > >> R CMD SHLIB -d --output Rsnns.dll Rsnns.c >> -Wl,-Lc:/mingw/lib,-lfl,-L../sources,-lkernel,-lfunc > > You should probably also show us the actual compiler/linker commands > that "R CMD SHLIB" is generating, so we can be sure of what's really > going on. > > I'm not sure what you may have to do differently with MinGW on Windows > (what linker does that use anyway?), but for comparison, here's how I > do it for R 2.2.1, on Linux (Ubuntu Dapper 6.06), with gcc 4.0.3, and > Gnu ld 2.16.91: > > For my own custom R package's C code, my Makefile says: > > OBJ = ../foo.o $(patsubst %.c,%.o,$(wildcard ../source/[a-z]*.c)) > $(OBJ): %.o: %.c $(HDRS) > R.so: $(OBJ) Makevars vis.map > R CMD SHLIB -o my_pkg_name_R.so $(OBJ) > > My Makevars includes this: > > PKG_LIBS = -Wl,--version-script=vis.map > > And when I build my R package, the R.so make target above generates > this link command: > > gcc -shared -o my_pkg_name_R.so [lots of *.o filenames here] > -Wl,--version-script=vis.map -L/usr/lib/R/lib -lR > > My vis.map file, which uses Gnu ld syntax, looks like this: > > { > global: my_pkg_*; > local:*; > }; > > That works, my shared library exports ONLY the symbols starting with > "my_pkg_", everything else remains private. > > It's the "--version-script" linker option doing the magic. Even with > Gnu ld, there are definitely other ways to control symbol visibility, > but that one seemed most convenient in my case. > > -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel