[Rcpp-devel] no matching function for call in mzR on Mac afterRcpp 0.11.0 updatee

Kevin Ushey kevinushey at gmail.com
Thu May 15 04:12:01 CEST 2014


Hi Laurent,

You need to link against boost thread, as it is not a header-only
library. Probably something like -lboost_thread or -lboost_thread-mt,
depending on how boost has been built on your system.

Cheers,
Kevin

On Wed, May 14, 2014 at 3:11 PM, Laurent Gatto <lg390 at cam.ac.uk> wrote:
>
> Updated to boost 1_54 and latest pwiz - see https://github.com/sneumann/mzR/tree/test for details.
>
> [...]
> g++ -shared -L/usr/local/lib -o mzR.so cramp.o ramp_base64.o ramp.o RcppRamp.o RcppRampModule.o rnetCDF.o ./boost/system/src/error_code.o ./boost/regex/src/posix_api.o ./boost/regex/src/fileiter.o ./boost/regex/src/regex_raw_buffer.o ./boost/regex/src/cregex.o ./boost/regex/src/regex_debug.o ./boost/regex/src/instances.o ./boost/regex/src/icu.o ./boost/regex/src/usinstances.o ./boost/regex/src/regex.o ./boost/regex/src/wide_posix_api.o ./boost/regex/src/regex_traits_defaults.o ./boost/regex/src/winstances.o ./boost/regex/src/wc_regex_traits.o ./boost/regex/src/c_regex_traits.o ./boost/regex/src/cpp_regex_traits.o ./boost/regex/src/static_mutex.o ./boost/regex/src/w32_regex_traits.o ./pwiz/data/msdata/Version.o ./pwiz/utility/minimxml/XMLWriter.o ./pwiz/utility/minimxml/SAXParser.o ./boost/iostreams/src/zlib.o ./boost/thread/src/pthread/once.o ./boost/filesystem/src/operations.o ./pwiz/data/common/MemoryIndex.o ./pwiz/data/common/CVTranslator.o ./pwiz/data/common/cv.o ./pwiz/data/common/ParamTypes.o ./pwiz/data/common/BinaryIndexStream.o ./pwiz/data/common/diff_std.o ./pwiz/data/msdata/SpectrumList_MGF.o ./pwiz/data/msdata/DefaultReaderList.o ./pwiz/data/msdata/ChromatogramList_mzML.o ./pwiz/data/msdata/examples.o ./pwiz/data/msdata/Serializer_mzML.o ./pwiz/data/msdata/Serializer_MSn.o ./pwiz/data/msdata/Reader.o ./pwiz/data/msdata/Serializer_MGF.o ./pwiz/data/msdata/Serializer_mzXML.o ./pwiz/data/msdata/SpectrumList_mzML.o ./pwiz/data/msdata/SpectrumList_MSn.o ./pwiz/data/msdata/BinaryDataEncoder.o ./pwiz/data/msdata/Diff.o ./pwiz/data/msdata/MSData.o ./pwiz/data/msdata/References.o ./pwiz/data/msdata/SpectrumList_mzXML.o ./pwiz/data/msdata/IO.o ./pwiz/data/msdata/SpectrumList_BTDX.o ./pwiz/data/msdata/SpectrumInfo.o ./pwiz/data/msdata/RAMPAdapter.o ./pwiz/data/msdata/LegacyAdapter.o ./pwiz/data/msdata/SpectrumIterator.o ./pwiz/data/msdata/MSDataFile.o ./pwiz/data/msdata/SpectrumListCache.o ./pwiz/utility/misc/IntegerSet.o ./pwiz/utility/misc/Base64.o ./pwiz/utility/misc/IterationListener.o ./pwiz/utility/misc/MSIHandler.o ./pwiz/utility/misc/Filesystem.o ./pwiz/utility/misc/TabReader.o ./pwiz/utility/misc/random_access_compressed_ifstream.o ./pwiz/utility/misc/SHA1.o ./pwiz/utility/misc/SHA1Calculator.o ./pwiz/utility/misc/sha1calc.o ./random_access_gzFile.o rampR.o -lpthread -lnetcdf -lhdf5 -lz -L/usr/local/lib/R/lib -lR
> /bin/bash: line 2: nc-config: command not found
> make[1]: Leaving directory `/home/lgatto/dev/00_github/mzR.Rcheck/00_pkg_src/mzR/src'
> make[1]: Entering directory `/home/lgatto/dev/00_github/mzR.Rcheck/00_pkg_src/mzR/src'
> make[1]: Leaving directory `/home/lgatto/dev/00_github/mzR.Rcheck/00_pkg_src/mzR/src'
> installing to /home/lgatto/dev/00_github/mzR.Rcheck/mzR/libs
> ** R
> ** inst
> ** preparing package for lazy loading
> Creating a generic function for ‘close’ from package ‘base’ in package ‘mzR’
> ** help
> *** installing help indices
> ** building package indices
> ** installing vignettes
> ** testing if installed package can be loaded
> Error in dyn.load(file, DLLpath = DLLpath, ...) :
>   unable to load shared object '/home/lgatto/dev/00_github/mzR.Rcheck/mzR/libs/mzR.so':
>   /home/lgatto/dev/00_github/mzR.Rcheck/mzR/libs/mzR.so: undefined symbol: _ZTIN5boost6detail16thread_data_baseE
> Error: loading failed
> Execution halted
> ERROR: loading failed
> * removing ‘/home/lgatto/dev/00_github/mzR.Rcheck/mzR’
>
> with
>
> echo _ZTIN5boost6detail16thread_data_baseE  | c++filt
> typeinfo for boost::detail::thread_data_base
>
> Any suggestions welcome.
>
> Laurent
>
>
> On 14 May 2014 09:07, Laurent Gatto <lg390 at cam.ac.uk> wrote:
>
>> We hope to be able to provide a fix soon - will get back to you later
>> today. Apologies for the inconvenience.
>>
>> Laurent
>>
>>
>> On 14 May 2014 05:49, Kevin Ushey <kevinushey at gmail.com> wrote:
>>
>>> Hi Jack,
>>>
>>> I've already brought this up with the package maintainer. It's because
>>> they bundle an old, broken version of boost. I asked them to fix it; I
>>> guess they haven't (the BioC build reports also show it failing on
>>> Mavericks) I've appended a copy of my e-mail at the end of this just
>>> so you know what's up (and maybe others having problems will stumble
>>> upon it).
>>>
>>> A local fix would involve removing the (broken, illegal) forward declarations.
>>>
>>> The error you saw before, re reference classes, was something separate
>>> -- that was indeed our bug, and is fixed in the current version of
>>> Rcpp on CRAN.
>>>
>>> Thanks,
>>> Kevin
>>>
>>> ---
>>>
>>> Hi Bernd, Nicolas,
>>>
>>> I'm unable to install mzR from source. Here's the script I use:
>>>
>>> #!/usr/bin/env sh
>>>
>>> cd ~
>>> mkdir .mzR
>>> cd .mzR
>>> wget http://www.bioconductor.org/packages/devel/bioc/src/contrib/mzR_1.9.8.tar.gz
>>> R CMD INSTALL mzR_1.9.8.tar.gz
>>>
>>> This gives me the same error as Nicolas sees:
>>>
>>> In file included from pwiz/data/msdata/DefaultReaderList.cpp:40:
>>>
>>> In file included from ./boost/regex.hpp:31:
>>> In file included from ./boost/regex/v4/regex.hpp:67:
>>> ./boost/regex/v4/basic_regex.hpp:149:9: error: too few template
>>> arguments for class
>>>       template 'vector'
>>>    std::vector<name> m_sub_names;
>>>         ^
>>> ./boost/detail/container_fwd.hpp:82:47: note: template is declared here
>>>     template <class T, class Allocator> class vector;
>>>     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^
>>>
>>> This is actually a case of boost doing something it shouldn't -- it's
>>> trying to forward-declare std::vector, but one cannot assume the
>>> template structure of a vector is of <class T, class Allocator> -- in
>>> particular this breaks on clang with libc++. See e.g.
>>> http://stackoverflow.com/questions/307343/forward-declare-an-stl-container
>>>
>>> One can work around this by forcing the following Makevars flags:
>>>
>>>     PKG_CXXFLAGS=-std=gnu++11 -stdlib=libstdc++
>>>
>>> However, this will only work if both Rcpp and mzR are built with the
>>> same flags, and using libstdc++ kind of defeats the purpose of using
>>> clang...
>>>
>>> I'm sure you'll get some mail from Dan Tenenbaum when he tries to
>>> build the package on the new Mavericks machines, so I think you will
>>> have to either update the version of boost packaged with mzR, or fix
>>> the forward declarations that it tries to use.
>>>
>>> Cheers,
>>> Kevin
>>>
>>> On Tue, May 13, 2014 at 8:52 PM, Jack Howarth
>>> <howarth.mailing.lists at gmail.com> wrote:
>>>> After updating the bioconductor packages to the Bioc 2.14 release, I ran in
>>>> to this failure on Mac OS X 10.9 with the clang compilers from Xcode 5.1.1.
>>>> Interestingly, this failure doesn't occur on Mac OS X  10.8 with the clang
>>>> compilers from Xcode 5.1.1 which suggests it somehow libc++ related. The
>>>> error below is suppressed on 10.9 f I append -stdlib=libstdc++ to the
>>>> compile line so it is definitely libc++ specific.
>>>>              Jack
>>>> ps The error I see in mzR  using Rcpp 0.11.1 is…
>>>>
>>>> clang++ -I/sw/Library/Frameworks/R.framework/Versions/3.1/Resources/include
>>>> -DNDEBUG -D_LARGEFILE_SOURCE -I./boost_aux/ -I. -DHAVE_PWIZ_MZML_LIB
>>>> -D_NODEBUG -I/sw/include -I"/sw/lib/R/3.1/site-library/Rcpp/include"   -fPIC
>>>> -g -O3  -c boost/regex/src/posix_api.cpp -o boost/regex/src/posix_api.o
>>>> In file included from boost/regex/src/posix_api.cpp:22:
>>>> In file included from ./boost/regex.hpp:31:
>>>> In file included from ./boost/regex/v4/regex.hpp:67:
>>>> ./boost/regex/v4/basic_regex.hpp:149:9: error: too few template arguments
>>>> for class template 'vector'
>>>>    std::vector<name> m_sub_names;
>>>>         ^
>>>> ./boost/detail/container_fwd.hpp:82:47: note: template is declared here
>>>>     template <class T, class Allocator> class vector;
>>>>     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^
>>>> In file included from boost/regex/src/posix_api.cpp:22:
>>>> In file included from ./boost/regex.hpp:31:
>>>> In file included from ./boost/regex/v4/regex.hpp:67:
>>>> ./boost/regex/v4/basic_regex.hpp:131:21: error: too few template arguments
>>>> for class template 'vector'
>>>>       typename std::vector<name>::const_iterator pos =
>>>> std::lower_bound(m_sub_names.begin(), m_sub_names.end(), t);
>>>>                     ^
>>>> ./boost/detail/container_fwd.hpp:82:47: note: template is declared here
>>>>     template <class T, class Allocator> class vector;
>>>>     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^
>>>> In file included from boost/regex/src/posix_api.cpp:22:
>>>> In file included from ./boost/regex.hpp:31:
>>>> In file included from ./boost/regex/v4/regex.hpp:67:
>>>> ./boost/regex/v4/basic_regex.hpp:131:35: error: expected a qualified name
>>>> after 'typename'
>>>>       typename std::vector<name>::const_iterator pos =
>>>> std::lower_bound(m_sub_names.begin(), m_sub_names.end(), t);
>>>>                                   ^
>>>> ./boost/regex/v4/basic_regex.hpp:131:35: error: unknown type name
>>>> 'const_iterator'
>>>> ./boost/regex/v4/basic_regex.hpp:141:21: error: too few template arguments
>>>> for class template 'vector'
>>>>       typename std::vector<name>::const_iterator pos =
>>>> std::lower_bound(m_sub_names.begin(), m_sub_names.end(), t);
>>>>                     ^
>>>> ./boost/detail/container_fwd.hpp:82:47: note: template is declared here
>>>>     template <class T, class Allocator> class vector;
>>>>     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^
>>>> In file included from boost/regex/src/posix_api.cpp:22:
>>>> In file included from ./boost/regex.hpp:31:
>>>> In file included from ./boost/regex/v4/regex.hpp:67:
>>>> ./boost/regex/v4/basic_regex.hpp:141:35: error: expected a qualified name
>>>> after 'typename'
>>>>       typename std::vector<name>::const_iterator pos =
>>>> std::lower_bound(m_sub_names.begin(), m_sub_names.end(), t);
>>>>                                   ^
>>>> ./boost/regex/v4/basic_regex.hpp:141:35: error: unknown type name
>>>> 'const_iterator'
>>>> ./boost/regex/v4/basic_regex.hpp:163:12: error: too few template arguments
>>>> for class template 'vector'
>>>>       std::vector<Other> v;
>>>>            ^
>>>> ./boost/detail/container_fwd.hpp:82:47: note: template is declared here
>>>>     template <class T, class Allocator> class vector;
>>>>     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^
>>>> In file included from boost/regex/src/posix_api.cpp:22:
>>>> In file included from ./boost/regex.hpp:31:
>>>> In file included from ./boost/regex/v4/regex.hpp:67:
>>>> ./boost/regex/v4/basic_regex.hpp:228:9: error: too few template arguments
>>>> for class template 'vector'
>>>>    std::vector<
>>>>         ^
>>>> ./boost/detail/container_fwd.hpp:82:47: note: template is declared here
>>>>     template <class T, class Allocator> class vector;
>>>>     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^
>>>> In file included from boost/regex/src/posix_api.cpp:22:
>>>> In file included from ./boost/regex.hpp:31:
>>>> In file included from ./boost/regex/v4/regex.hpp:67:
>>>> ./boost/regex/v4/basic_regex.hpp:269:9: error: too few template arguments
>>>> for class template 'basic_string'
>>>>    std::basic_string<charT> BOOST_REGEX_CALL str()const
>>>>         ^
>>>> ./boost/detail/container_fwd.hpp:63:65: note: template is declared here
>>>>     template <class charT, class traits, class Allocator> class
>>>> basic_string;
>>>>     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^
>>>> In file included from boost/regex/src/posix_api.cpp:22:
>>>> In file included from ./boost/regex.hpp:31:
>>>> In file included from ./boost/regex/v4/regex.hpp:67:
>>>> ./boost/regex/v4/basic_regex.hpp:271:12: error: too few template arguments
>>>> for class template 'basic_string'
>>>>       std::basic_string<charT> result;
>>>>            ^
>>>> ./boost/detail/container_fwd.hpp:63:65: note: template is declared here
>>>>     template <class charT, class traits, class Allocator> class
>>>> basic_string;
>>>>     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^
>>>> In file included from boost/regex/src/posix_api.cpp:22:
>>>> In file included from ./boost/regex.hpp:31:
>>>> In file included from ./boost/regex/v4/regex.hpp:67:
>>>> ./boost/regex/v4/basic_regex.hpp:273:24: error: too few template arguments
>>>> for class template 'basic_string'
>>>>          result = std::basic_string<charT>(this->m_expression,
>>>> this->m_expression_len);
>>>>                        ^
>>>> ./boost/detail/container_fwd.hpp:63:65: note: template is declared here
>>>>     template <class charT, class traits, class Allocator> class
>>>> basic_string;
>>>>     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^
>>>> In file included from boost/regex/src/posix_api.cpp:22:
>>>> In file included from ./boost/regex.hpp:31:
>>>> In file included from ./boost/regex/v4/regex.hpp:67:
>>>> ./boost/regex/v4/basic_regex.hpp:285:68: error: implicit instantiation of
>>>> undefined template 'std::pair<unsigned long, unsigned long>'
>>>>       std::pair<const_iterator, const_iterator> p(expression() + pi.first,
>>>> expression() + pi.second);
>>>>                                                                    ^
>>>> ./boost/detail/container_fwd.hpp:92:42: note: template is declared here
>>>>     template <class T1, class T2> struct pair;
>>>>                                          ^
>>>> In file included from boost/regex/src/posix_api.cpp:22:
>>>> In file included from ./boost/regex.hpp:31:
>>>> In file included from ./boost/regex/v4/regex.hpp:67:
>>>> ./boost/regex/v4/basic_regex.hpp:527:9: error: too few template arguments
>>>> for class template 'basic_string'
>>>>    std::basic_string<charT> BOOST_REGEX_CALL str()const
>>>>         ^
>>>> ./boost/detail/container_fwd.hpp:63:65: note: template is declared here
>>>>     template <class charT, class traits, class Allocator> class
>>>> basic_string;
>>>>     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^
>>>> In file included from boost/regex/src/posix_api.cpp:22:
>>>> In file included from ./boost/regex.hpp:31:
>>>> In file included from ./boost/regex/v4/regex.hpp:67:
>>>> ./boost/regex/v4/basic_regex.hpp:529:52: error: too few template arguments
>>>> for class template 'basic_string'
>>>>       return m_pimpl.get() ? m_pimpl->str() : std::basic_string<charT>();
>>>>                                                    ^
>>>> ./boost/detail/container_fwd.hpp:63:65: note: template is declared here
>>>>     template <class charT, class traits, class Allocator> class
>>>> basic_string;
>>>>     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^
>>>> In file included from boost/regex/src/posix_api.cpp:22:
>>>> In file included from ./boost/regex.hpp:31:
>>>> In file included from ./boost/regex/v4/regex.hpp:70:
>>>> ./boost/regex/v4/basic_regex_creator.hpp:140:26: error: too few template
>>>> arguments for class template 'vector'
>>>>    typedef typename std::vector<digraph_type>::const_iterator
>>>> list_iterator;
>>>>                          ^
>>>> ./boost/detail/container_fwd.hpp:82:47: note: template is declared here
>>>>     template <class T, class Allocator> class vector;
>>>>     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^
>>>> In file included from boost/regex/src/posix_api.cpp:22:
>>>> In file included from ./boost/regex.hpp:31:
>>>> In file included from ./boost/regex/v4/regex.hpp:70:
>>>> ./boost/regex/v4/basic_regex_creator.hpp:140:48: error: expected a qualified
>>>> name after 'typename'
>>>>    typedef typename std::vector<digraph_type>::const_iterator
>>>> list_iterator;
>>>>                                                ^
>>>> ./boost/regex/v4/basic_regex_creator.hpp:140:62: error: expected ';' at end
>>>> of declaration list
>>>>    typedef typename std::vector<digraph_type>::const_iterator
>>>> list_iterator;
>>>>                                                              ^
>>>>                                                              ;
>>>> ./boost/regex/v4/basic_regex_creator.hpp:141:4: error: unknown type name
>>>> 'list_iterator'
>>>>    list_iterator singles_begin()const
>>>>    ^
>>>> fatal error: too many errors emitted, stopping now [-ferror-limit=]
>>>> 20 errors generated.
>>>>
>>>>
>>>> _______________________________________________
>>>> 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
>>> _______________________________________________
>>> 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
>>
>> _______________________________________________
>> 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
>


More information about the Rcpp-devel mailing list