Thanks for your email.
I try to change the name in lowercase but it conflicts with a C implementation
also named halton. So I rename the C function halton2() and sobol2() while the
Fortran function are HALTON() and SOBOL() (I also try lower case in the Fortran
code). Unfortunately, it does not help since I get
init.c:97:25: error: use of undeclared identifier 'halton_'; did you
mean 'halton2'?
  {"halton", (DL_FUNC) &F77_SUB(halton),  7},
My current solution is to comment FortEntries array and use
R_useDynamicSymbols(dll, TRUE) for a dynamic search of Fortran routines.
Regards, Christophe
---------------------------------------
Christophe Dutang
LMM, UdM, Le Mans, France
web: http://dutangc.free.fr
<http://dutangc.free.fr/>> Le 9 mai 2017 ? 14:32, Berend Hasselman <bhh at xs4all.nl> a ?crit :
> 
> 
>> On 9 May 2017, at 13:44, Christophe Dutang <dutangc at gmail.com>
wrote:
>> 
>> Dear list,
>> 
>> I?m trying to register Fortran routines in randtoolbox (in srt/init.c
file), see
https://r-forge.r-project.org/scm/viewvc.php/pkg/randtoolbox/src/init.c?view=markup&root=rmetrics.
>> 
>> Reading
https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Registering-native-routines
and looking at what is done in stats package, I first thought that the following
code will do the job:
>> 
>> static const R_FortranMethodDef FortEntries[] = {
>> {"halton", (DL_FUNC) &F77_NAME(HALTON),  7},
>> {"sobol", (DL_FUNC) &F77_NAME(SOBOL),  11},
>> {NULL, NULL, 0}
>> };
>> 
>> But I got error messages when building : use of undeclared identifier
?SOBOL_?. I also tried in lower case sobol and halton.
>> 
>> Looking at expm package
https://r-forge.r-project.org/scm/viewvc.php/pkg/src/init.c?view=markup&revision=94&root=expm,
I try
>> 
>> static const R_FortranMethodDef FortEntries[] = {
>> {"halton", (DL_FUNC) &F77_SUB(HALTON),  7},
>> {"sobol", (DL_FUNC) &F77_SUB(SOBOL),  11},
>> {NULL, NULL, 0}
>> };
>> 
>> But the problem remains the same.
>> 
>> Is there a way to have header file for Fortran codes? how to declare
routines defined in my Fortran file src/LowDiscrepancy.f?
>> 
> 
> lowercase routine names? manual does mention that.
> 
> Berend Hasselman
> 
> 
>> Any help appreciated
>> 
>> Regards, Christophe
>> ---------------------------------------
>> Christophe Dutang
>> LMM, UdM, Le Mans, France
>> web: http://dutangc.free.fr
>> 
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
> 
	[[alternative HTML version deleted]]
Christophe,> On 10 May 2017, at 08:08, Christophe Dutang <dutangc at gmail.com> wrote: > > Thanks for your email. > > I try to change the name in lowercase but it conflicts with a C implementation also named halton. So I rename the C function halton2() and sobol2() while the Fortran function are HALTON() and SOBOL() (I also try lower case in the Fortran code). Unfortunately, it does not help since I get > > init.c:97:25: error: use of undeclared identifier 'halton_'; did you mean 'halton2'? > {"halton", (DL_FUNC) &F77_SUB(halton), 7}, > > My current solution is to comment FortEntries array and use R_useDynamicSymbols(dll, TRUE) for a dynamic search of Fortran routines.Have a look at my package geigen and its init.c. Could it be that you are missing extern declarations for the Fortran routines? Berend
Have you tried using tools:::package_native_routine_registration_skeleton()? If you don't like its output, you can easily edit its results and still avoid most pitfalls. Cheers, Jari Oksanen ________________________________________ From: R-devel <r-devel-bounces at r-project.org> on behalf of Berend Hasselman <bhh at xs4all.nl> Sent: 10 May 2017 09:48 To: Christophe Dutang Cc: r-devel at r-project.org Subject: Re: [Rd] registering Fortran routines in R packages Christophe,> On 10 May 2017, at 08:08, Christophe Dutang <dutangc at gmail.com> wrote: > > Thanks for your email. > > I try to change the name in lowercase but it conflicts with a C implementation also named halton. So I rename the C function halton2() and sobol2() while the Fortran function are HALTON() and SOBOL() (I also try lower case in the Fortran code). Unfortunately, it does not help since I get > > init.c:97:25: error: use of undeclared identifier 'halton_'; did you mean 'halton2'? > {"halton", (DL_FUNC) &F77_SUB(halton), 7}, > > My current solution is to comment FortEntries array and use R_useDynamicSymbols(dll, TRUE) for a dynamic search of Fortran routines.Have a look at my package geigen and its init.c. Could it be that you are missing extern declarations for the Fortran routines? Berend ______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
> On 10 May 2017, at 08:48, Berend Hasselman <bhh at xs4all.nl> wrote: > > Christophe, > >> On 10 May 2017, at 08:08, Christophe Dutang <dutangc at gmail.com> wrote: >> >> Thanks for your email. >> >> I try to change the name in lowercase but it conflicts with a C implementation also named halton. So I rename the C function halton2() and sobol2() while the Fortran function are HALTON() and SOBOL() (I also try lower case in the Fortran code). Unfortunately, it does not help since I get >> >> init.c:97:25: error: use of undeclared identifier 'halton_'; did you mean 'halton2'? >> {"halton", (DL_FUNC) &F77_SUB(halton), 7}, >> >> My current solution is to comment FortEntries array and use R_useDynamicSymbols(dll, TRUE) for a dynamic search of Fortran routines. > > Have a look at my package geigen and its init.c. > Could it be that you are missing extern declarations for the Fortran routines?I ran a development version of R some time ago with this tools:::package_native_routine_registration_skeleton("geigen",con="./geigen_report.txt") to generate a skeleton init.c. I used that without modification. Berend