[R] Calling function in DLL using .C

Alex van der Spek doorz at xs4all.nl
Tue Jan 24 17:55:39 CET 2012


Uploaded the DLL here:

http://www.filefactory.com/file/c2c56ad/n/Planck.dll

Appreciate if you can check to see if anything is wrong with this DLL. I
use dumpbin to look at what is in the exports table of the DLL. No reason
for concerns there. I can work with this DLL from both VBA and Python.
Python's ctypes allow the use of both the C and stdcall versions. Both
work fine.


By the way, the DLL contains, for every function, one export using C
calling conventions for use in R (name appended with R) and one export
using stdcall for use with VBA/Python, the latter using decorated names.

Reading up on gcc in the mean time.

Thank you,
Alex van der Spek

> On 24/01/2012 10:35 AM, Alex van der Spek wrote:
>> Yes, sorry, I am learning how to do this. I am a simple and ageing
>> physicist who grew up with Fortran and Algol.
>>
>> Just wondering if what appears to be an internal R inconsistency between
>> is.loaded() and .C() can be explained.
>>
>> Attempts to compile with gcc to a DLL unsuccessfull so far. That is
>> solely because I have never used gcc before and have a long way to go.
>> Years ago I taught myself how to use DLLs in VBA, it took 6 weeks to
>> learn how to make sense out of decorated names and Fortran string
>> passing. The use of DLLs in Python was easy. I am OK with investing
>> weeks again to learn how to do this in R but with the apparent
>> inconsistency I am uncertain where to begin. Drop VC97 and use gcc as a
>> cure all?
>
> That would be easiest, because then there would be lots of others
> available to help you.  You may be the only one using your particular
> compiler with R.
>
> You could also post the .dll online so others can take a look and see
> what's going on.  We might not be able to tell you how to fix the
> problem with your compiler, but we could likely tell you what it is.
>
> Duncan Murdoch
>
>> Thanks,
>> Alex van der Spek
>>
>>
>>
>> On 01/24/2012 04:11 PM, Duncan Murdoch wrote:
>> >  On 24/01/2012 6:49 AM, Alex van der Spek wrote:
>> >>  I cannot understand why a function appears to be available to R
>> >>  (is.loaded('planckwR') returns TRUE) but the call with .C results in
>> an
>> >>  error message:
>> >>
>> >>  C symbol name 'planckwR' not in DLL for package<path to DLL file
>> here>
>> >
>> >  You posted this question a few days ago, and said you'd try using gcc
>> >  instead of VS.  How did that go?
>> >
>> >  Duncan Murdoch
>> >
>>
>
>



More information about the R-help mailing list