[Rd] Portability of a C function

Christophe Genolini cgenolin at u-paris10.fr
Sun Feb 14 22:18:08 CET 2010


Thanks, this helps a lot.

So if I understand correctly:
in package P1, I want to export printMatrix and printMatrixInt. In my 
file P1.c, I have to add

void R_init_P1(DllInfo *info){
    R_registerCCallable("longitudinalData","printMatrix",printMatrix);
    R_registerCCallable("longitudinalData","printMatrixInt",printMatrixInt);
};


In P2.c, I have to add :

void R_init_P2(DllInfo *info){
    printMatrix = R_GetCCallable("longitudinalData","printMatrix");
    printMatrixInt = R_GetCCallable("longitudinalData","printMatrixInt");
};


I still have a problem here: "Writing R ext" say that 'printMatrix' and 
'printMatrixInt' should have "an appropriate declaration". What is the 
appropriate declaration?

Christophe


> Hello,
>
> This was discussed this week in the thread "LinkingTo and C++".
>
> It is possible, and documented in WRE section 5.4 : 
> http://cran.r-project.org/doc/manuals/R-exts.html#Registering-native-routines 
>
>
> Romain
>
> On 02/14/2010 12:58 PM, Christophe Genolini wrote:
>>
>> Hi the list,
>>
>> In a package P1, I write a function f1 in C, potentially an internal
>> function (not to be called from R).
>> In a package P2, I write a function f2 in C. The f2 function needs to
>> use f1 from P1. Is it possible ?
>>
>> --- 8< ---- In file P1.c ---------
>> double f1(x,y){
>> ....
>> }
>>
>> --- 8< ---- In file P2.c ---------
>> void f2(x,y,z){
>> double result;
>> ....
>> result = f1(x,y);
>> ....
>> }
>>
>> Thanks
>> Christophe
>



More information about the R-devel mailing list