> Le 23 juin 2022 à 16:58, Serguei Sokol <serguei.so...@gmail.com> a écrit : > > Rcpp or plain C++ or even C ;) , you still have to declare used functions. > In Rcpp package, the most natural way to do it, is to put such declarations > in a file $pkg/inst/include/<pkg_name>.h. In your case, it will be > inst/include/ade4.h > > In this file you put: > > #include <RcppArmadillo.h> > int matcentrageCpp (arma::mat& A, const arma::vec& poili, const int typ); > > and all other functions of yours you plan to use in a cross-file way. > Then, in a file where you want to use such functions (e.g. in > testertracenuCpp.cpp), you add > > #include <ade4.h> > > Finally, you add the following line in your src/Makevars: > > PKG_CPPFLAGS = -I../inst/include > > After all this, I've got a compilation without error. > I can make a PR if you wish.
Yes, please do. Thanks a lot ! > Best, > Serguei. > > Le 23/06/2022 à 16:10, Jean Thioulouse a écrit : >>> Le 23 juin 2022 à 16:04, Serguei Sokol <serguei.so...@gmail.com> a écrit : >>> >>> Le 23/06/2022 à 15:47, Jean Thioulouse a écrit : >>>> Thank you Serguei, I tried this, but I still get the "undeclared >>>> identifier" error for these internal functions during package compilation: >>>> clang++ -arch arm64 -std=gnu++14 >>>> -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG >>>> -I'/Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/Rcpp/include' >>>> >>>> -I'/Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/RcppArmadillo/include' >>>> -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c >>>> testertracenuCpp.cpp -o testertracenuCpp.o >>>> testertracenuCpp.cpp:112:9: error: use of undeclared identifier >>>> 'matcentrageCpp' >>>> i = matcentrageCpp (ti1p, pl, typ1); >>> I cannot find 'matcentrageCpp' in >>> https://github.com/sdray/ade4/tree/ade4-Rcpp/. Do you have a current state >>> example somewhere? >> Yes, I just pushed it in the ade4-Rcpp branch. >>> >>> Serguei. >>> >>>> ^ >>>> Jean >>>>> Le 23 juin 2022 à 15:17, Serguei Sokol <serguei.so...@gmail.com> a écrit : >>>>> >>>>> Le 23/06/2022 à 15:02, THIOULOUSE JEAN a écrit : >>>>>> Hi >>>>>> Sorry to bother you again with my C/C++ problems in the ade4 package >>>>>> (available on CRAN & GitHub). >>>>>> Thanks to your help, I have succeeded in converting several of the C >>>>>> functions to C++ using Rcpp. Now the package compiles without problem >>>>>> and all my C++ functions run fine in the dedicated GitHub branch of the >>>>>> package (ade4-Rcpp). >>>>>> The new problem I am facing now is that in ade4, I use a library of >>>>>> about 30 utilities functions collected in one file named adesub.c, with >>>>>> adesub.h headers file. From what I understand, during package >>>>>> compilation these functions are added to the ade4 shared library and >>>>>> they can be called by my other C functions without being declared in the >>>>>> init.c or NAMESPACE files, as they do not need to be known by R. >>>>>> I would like to know if it is possible to do the same thing in C++ with >>>>>> Rcpp. >>>>> If I understand correctly you goal, just don't put "// [[Rcpp::export]]" >>>>> before your "internal" functions. They will be available to all C and C++ >>>>> functions in src/ but not seen in R. You don't need extra "R CMD SHLIB" >>>>> either. >>>>> >>>>> Best, >>>>> Serguei. >>>>> >>>>> I have found reading the documentation (Dirk's book and Rcpp vignettes) >>>>> that I could use R CMD SHLIB to build a shared library and then dyn.load >>>>> it in R. I have created a file named ade4lib.cpp containing the utilities >>>>> functions in the src directory, and I can make the shared library >>>>> (ade4lib.so) with RCMD SHLIB. But this does not solve my problem because, >>>>> as I understand it, this makes the utilities library functions available >>>>> to R (which is useless since they are not interfaced correctly to R but >>>>> to C++), and not to the other C++ functions (which is what i need to do). >>>>>> Can anybody see where I am mistaken, and point me to the right direction >>>>>> to accomplish this ? >>>>>> Thank you, >>>>>> Jean >>>>>> —- >>>>>> Jean THIOULOUSE - >>>>>> https://lbbe-web.univ-lyon1.fr/en/annuaires-des-membres/thioulouse-jean >>>>>> https://orcid.org/0000-0001-7664-0598 (ORCID page) >>>>>> https://www.springer.com/fr/book/9781493988488 (ade4 Book) >>>>>> https://pbil.univ-lyon1.fr/JTHome/Biblio/ThioulouseEB2021.pdf (Evol. >>>>>> Biol. paper) >>>>>> _______________________________________________ >>>>>> Rcpp-devel mailing list >>>>>> Rcpp-devel@lists.r-forge.r-project.org >>>>>> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel >>>>> >>> > _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel