Function/file names are hypothetical. Say I have written myfunction.R,
which calls myfunction.c via .C("myfunction", ...).
I've compiled successfully myfunction.c via R CMD SHLIB myfunction.c
in the terminal. Then, in the R console:
dyn.load("myfunction.so")
source("myfunction.R")
test <- myfunction() # works fine
So everything is in order, myfunction works perfectly.
Now I want to include myfunction() into a package called mypackage.
Here's what I did:
1) I've added PACKAGE = "mypackage" in the .C() line in
myfunction.R.
2) I put myfunction.R into the R folder of mypackage
3) I put myfunction.c into the src folder of mypackage
4) I created myfunction.Rd into the man folder
I then build the package via R CMD build mypackage. All good. However,
when I run R CMD check mypackage, I get the following error (note that
I translated from french, might be a bit different in english):
Error in .C("myfunction", ...): C symbol name "myfunction"
cannot be
found in the DLL for package "mypackage"
I would appreciate some help here. Please do not refer my to "Writing
R extensions" - if the answer's in there, I don't understand it.
Many thanks.
--
Etienne Lalibert?
===============================Rural Ecology Research Group
School of Forestry
University of Canterbury
Private Bag 4800
Christchurch 8140, New Zealand
Phone: +64 3 366 7001 ext. 8365
Fax: +64 3 364 2124
www.elaliberte.info
Etienne Lalibert? wrote:> Function/file names are hypothetical. Say I have written myfunction.R, > which calls myfunction.c via .C("myfunction", ...). > > I've compiled successfully myfunction.c via R CMD SHLIB myfunction.c > in the terminal. Then, in the R console: > > dyn.load("myfunction.so") > source("myfunction.R") > test <- myfunction() # works fine > > So everything is in order, myfunction works perfectly. > > Now I want to include myfunction() into a package called mypackage. > Here's what I did: > > 1) I've added PACKAGE = "mypackage" in the .C() line in myfunction.R. > 2) I put myfunction.R into the R folder of mypackage > 3) I put myfunction.c into the src folder of mypackage > 4) I created myfunction.Rd into the man folder > > I then build the package via R CMD build mypackage. All good. However, > when I run R CMD check mypackage, I get the following error (note that > I translated from french, might be a bit different in english): > > Error in .C("myfunction", ...): C symbol name "myfunction" cannot be > found in the DLL for package "mypackage" > > I would appreciate some help here. Please do not refer my to "Writing > R extensions" - if the answer's in there, I don't understand it. >What do you get from R CMD INSTALL mypackage? Duncan Murdoch> Many thanks. > > -- > Etienne Lalibert? > ===============================> Rural Ecology Research Group > School of Forestry > University of Canterbury > Private Bag 4800 > Christchurch 8140, New Zealand > Phone: +64 3 366 7001 ext. 8365 > Fax: +64 3 364 2124 > www.elaliberte.info > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >
Dear Etienne,
You probably want to create a zzz.R file in the /mypkg/R/ folder which
is just
.First.lib <- function(lib, pkg){
library.dynam("MyPkgName", package = pkg, lib.loc = lib)
return(invisible(0))
}
This would ensure that your shared library will be loaded.
Best,
Mathieu
Le lundi 26 octobre 2009 ? 03:58 +0100, Etienne Lalibert? a ?crit
:> Function/file names are hypothetical. Say I have written myfunction.R,
> which calls myfunction.c via .C("myfunction", ...).
>
> I've compiled successfully myfunction.c via R CMD SHLIB myfunction.c
> in the terminal. Then, in the R console:
>
> dyn.load("myfunction.so")
> source("myfunction.R")
> test <- myfunction() # works fine
>
> So everything is in order, myfunction works perfectly.
>
> Now I want to include myfunction() into a package called mypackage.
> Here's what I did:
>
> 1) I've added PACKAGE = "mypackage" in the .C() line in
myfunction.R.
> 2) I put myfunction.R into the R folder of mypackage
> 3) I put myfunction.c into the src folder of mypackage
> 4) I created myfunction.Rd into the man folder
>
> I then build the package via R CMD build mypackage. All good. However,
> when I run R CMD check mypackage, I get the following error (note that
> I translated from french, might be a bit different in english):
>
> Error in .C("myfunction", ...): C symbol name
"myfunction" cannot be
> found in the DLL for package "mypackage"
>
> I would appreciate some help here. Please do not refer my to "Writing
> R extensions" - if the answer's in there, I don't understand
it.
>
> Many thanks.
>
> --
> Etienne Lalibert?
> ===============================> Rural Ecology Research Group
> School of Forestry
> University of Canterbury
> Private Bag 4800
> Christchurch 8140, New Zealand
> Phone: +64 3 366 7001 ext. 8365
> Fax: +64 3 364 2124
> www.elaliberte.info
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
--
Institute of Mathematics
Ecole Polytechnique F?d?rale de Lausanne
STAT-IMA-FSB-EPFL, Station 8
CH-1015 Lausanne Switzerland
http://stat.epfl.ch/
Tel: + 41 (0)21 693 7907