Hi Dan,

In case this catches anyone else ... 

FWIW, I found the issue ...  in my Rinit.c, my package uses the .External call 
which actually takes one SEXP which points to a "varargs-like" list.

Under 2.15.X and earlier, I thought the proper entry for an .External call was 
as below since it only does take one pointer as an argument:

#include "Rigroup.h"

/* Automate using sed or something. */
#if _MSC_VER >= 1000
__declspec(dllexport)
#endif

   static const R_ExternalMethodDef R_ExtDef[] = {
        {"igroupFuns", (DL_FUNC)&igroupFuns, 1},
        {NULL, NULL, 0},
   };

void R_init_Rigroup(DllInfo *info)
{
 R_registerRoutines(info,NULL,NULL,NULL,R_ExtDef);
}


But now according to the latest online docs on building your own package it 
says:

"For routines with a variable number of arguments invoked viathe .External 
interface, one specifies -1 for the number of arguments which tells R not to 
check the actual number passed. Note that the number of arguments passed to 
.External are not currently checked but they will be in R 3.0.0."

So I need to change my Rinit.c to change the "1" to a "-1" and that error 
should go away.

Thanks again for all your help with this.  I will update my package and 
resubmit it once version 3.0 gets released and I get a chance to verify that 
this does in fact fix the problem.

Kevin

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to