[Rcpp-devel] Rcpp + Package -> undefined symbol

Michaël BENESTY michael at benesty.fr
Wed Aug 2 21:02:15 CEST 2017


Thank you Dirk for this answer.

The source code of Fasttext is already embedded in the package (it is
the content of ../inst/include/ and is linked with PKG_CPPFLAGS +
include of headers).
So no issue with user having it or needing to link with PKG_LIBS.

I have checked the compilation with this Makevars:
CXX_STD = CXX11
ROOT_INCLUDE = ../inst/include/
PKG_CPPFLAGS = -I$(ROOT_INCLUDE)
PKG_LIBS = -L$(ROOT_INCLUDE)

And I still get the same error.


Is there anything else to check?
The error seems related to a shared object, do I have something special to do?
I am not even sure to understand the error message, why it can't load
the object if it has compiled?

Kind regards,
Michaël


On Wed, Aug 2, 2017 at 8:32 PM, Dirk Eddelbuettel <edd at debian.org> wrote:
>
> On 2 August 2017 at 20:22, Michaël BENESTY wrote:
> | Hi,
> |
> | I am trying to wrap the Fasttext lib from Facebook on R.
> | I have wrote a minimal code based on Rcpp.package.skeleton(module = TRUE)
> |
> | The C++ file compiles/works with sourceCpp() but it crashes when
> | building a package.
> | I have checked many D. Eddelbuettel to get a clue of what to do but no luck.
> | I have already setup a Makevars file with a path to the include folder.
> |
> | The package source code is available there:
> | https://github.com/pommedeterresautee/FastRText
> |
> | My Makevars:
> | CXX_STD = CXX11
> | ROOT_INCLUDE = ../inst/include/
> | PKG_CPPFLAGS=-I$(ROOT_INCLUDE)
>
> If this is a library then you need to __link__ to it as well. That is
> commonly done via PKG_LIBS=... and it may get you the additional problem of
> having to ensure users of your package have the fastText library installed.
>
> Dirk
> |
> |
> | The error I am seeing:
> | ==> R CMD INSTALL --preclean --no-multiarch --with-keep.source FastRText
> | ...
> | Error: package or namespace load failed for ‘FastRText’ in
> | dyn.load(file, DLLpath = DLLpath, ...):
> |  impossible de charger l'objet partagé
> | '/home/geantvert/R/x86_64-pc-linux-gnu-library/3.4/FastRText/libs/FastRText.so':
> |   /home/geantvert/R/x86_64-pc-linux-gnu-library/3.4/FastRText/libs/FastRText.so:
> | undefined symbol: _ZN8fasttext8FastTextC1Ev
> |
> |
> | The full log is available there:
> | https://github.com/pommedeterresautee/FastRText/issues/1
> |
> | According to c++filt
> | undefined symbol: _ZN8fasttext8FastTextC1Ev means ->
> | fasttext::FastText::FastText()
> |
> |
> | Has anyone an idea?
> |
> | Kind regards,
> | Michaël
> | ________________
> | Michaël BENESTY
> | michael at benesty.fr
> | Please do not print this e-mail unless you really need to.
> | _______________________________________________
> | Rcpp-devel mailing list
> | Rcpp-devel at lists.r-forge.r-project.org
> | https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
> --
> http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org


More information about the Rcpp-devel mailing list