> That is true only for very specific architectures and OS combinations
> but not on most systems (including Linux). Shared objects must be
> compiled to contain position-independent code (PIC) such that they can
> be re-located when loaded dynamically. In general you cannot use a
> static library in a package unless the library was specifically
> compiled with -fPIC.

It was indeed compiled with -fPIC on Linux. I had forgotten that and wonder if it might be related.

> Also please note that the above is possibly not what you want: -static
> is not an option that applies to the library - it's a global option
> for the linker which affects *all* libraries and possibly even the crt
> code and compiler-related libraries (this depends on the platform). It
> may cause additional problems since you may need to link R library
> dynamically. All this is not related to Windows - this applies in
> general on any platform (including Linux).

AFAICT -static can be used to force inclusion of a library statically. It may not be the case, the bulk of my coding experience is in Java, not wrapping esoteric functions in to R-callable C code! :-) Strangely though, it seems to work fine. I'll have to do some more tinkering to see if it can forced into a single build, rather than a 2-stage one.

OK. Since my previous mail, I discovered the pedump tool, and found that both pedump and objdump will segfault (So it appears, Windoze doesn't give enough information to be sure!) if I attempt to retrieve the Ordinal table from the freshly compiled DLL. This suggests that something is going awry during the second stage of the build (since I can retrieve the same information from the .lib file).

The problem with adding more details is the nature of the work. At the minute, I'm obliged to keep the fine details secret. I had a feeling that this might have been the case, but I thought it was worth seeing if someone had already encountered this and solved it in a different specific case.