Dear all, I created a small example that reproduces my error below. It has to
do with my use of module with .constructor<const Rcpp::NumericVector &, int>()
with Rcpp::NumericVector. I guess I’m not doing things the right way but since
it is working on windows and used to work until now with my Mac …
Thanks in advance for your help (below the simple test and the error obtained)
Regards
Robin
#include <Rcpp.h>
using namespace Rcpp;
class MyModel
{
public:
double a;
~MyModel();
MyModel();
MyModel(const Rcpp::NumericVector& ModelData, int temp);
};
RCPP_EXPOSED_CLASS(MyModel)
MyModel::~MyModel()
{}
MyModel::MyModel() : a(0)
{}
MyModel::MyModel(const Rcpp::NumericVector& ModelData, int temp) : a(0)
{}
RCPP_MODULE(MyModel){
Rcpp::class_<MyModel>("MyModel")
.constructor()
.constructor<const Rcpp::NumericVector &, int>()
;
}
Compilation error :
/usr/local/clang7/bin/clang++ -Wall
-I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG
-I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include"
-I"/Users/robin.girard/Documents/Code/Packages/test_modules/Test2/src"
-I"/Users/robin.girard/Documents/Code/Packages/test_modules/Test2/src/../inst/include"
-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
-I/usr/local/include -fPIC -Wall -g -O2 -c test.cpp -o test.o
In file included from test.cpp:1:
In file included from
/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp.h:27:
In file included from
/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/RcppCommon.h:168:
In file included from
/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp/as.h:25:
/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp/internal/Exporter.h:31:30:
error: reference member 't' binds to a temporary object whose lifetime would
be shorter than the lifetime of the constructed object
Exporter( SEXP x ) : t(x){}
^
/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp/as.h:87:41:
note: in instantiation of member function 'Rcpp::traits::Exporter<const
Rcpp::Vector<14, PreserveStorage> &>::Exporter' requested here
::Rcpp::traits::Exporter<T> exporter(x);
^
/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp/as.h:152:26:
note: in instantiation of function template specialization
'Rcpp::internal::as<const Rcpp::Vector<14, PreserveStorage> &>' requested here
return internal::as<T>(x, typename
traits::r_type_traits<T>::r_category());
^
/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp/module/Module_generated_Constructor.h:58:13:
note: in instantiation of function template specialization 'Rcpp::as<const
Rcpp::Vector<14, PreserveStorage> &>' requested here
as<U0>(args[0]),
^
/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp/module/Module_generated_class_constructor.h:91:29:
note: in instantiation of member function 'Rcpp::Constructor_2<MyModel, const
Rcpp::Vector<14, PreserveStorage> &, int>::get_new' requested here
AddConstructor( new Constructor_2<Class,U0,U1> , valid, docstring ) ;
^
test.cpp:26:4: note: in instantiation of function template specialization
'Rcpp::class_<MyModel>::constructor<const Rcpp::Vector<14, PreserveStorage> &,
int>' requested here
.constructor<const Rcpp::NumericVector &, int>()
^
/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp/internal/Exporter.h:35:9:
note: reference member declared here
T t ;
1 error generated.
make: *** [test.o] Error 1
Error in Rcpp::sourceCpp("src/test.cpp") :
Error 1 occurred building shared library.
> Le 3 mai 2019 à 08:41, Robin GIRARD <[email protected]> a écrit
> :
>
> I found a way to solve my RcppArmadillo problem here
> https://stackoverflow.com/questions/51761599/cannot-find-stdio-h
> <https://stackoverflow.com/questions/51761599/cannot-find-stdio-h>
> I don’t really understand what happened because I had the file.
> The other error is still here
> Regards
> Robin
>
>> Le 3 mai 2019 à 08:32, Robin GIRARD <[email protected]
>> <mailto:[email protected]>> a écrit :
>>
>> Dear Simon,
>>
>> **regarding RcppArmadillo build from source pb** the config.log is attached
>> and points the following error while checking something about cross
>> compilation.
>> In file included from conftest.cpp:9:
>> /usr/local/clang7/include/c++/v1/stdio.h:108:15: fatal error: 'stdio.h' file
>> not found
>> #include_next <stdio.h>
>>
>> But this file exists.
>>
>> ** regarding my compilation error** it is obtained while trying to build the
>> module file, when calling #include "Rcpp.h » (line 4 of file Client.hpp)
>> /usr/local/clang7/bin/clang++ -Wall
>> -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -std=c++11
>> -I../inst/include/
>> -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include"
>> -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
>> -I/usr/local/include -fPIC -Wall -g -O2 -c mod_client.cc
>> <http://mod_client.cc/> -o mod_client.o
>>
>> In file included from mod_client.cc <http://mod_client.cc/>:1:
>> In file included from ../inst/include/Client.hpp:4:
>> In file included from
>> /Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp.h:27:
>> In file included from
>> /Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/RcppCommon.h:168:
>> In file included from
>> /Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp/as.h:25:
>> /Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp/internal/Exporter.h:31:30:
>> error: reference member 't' binds to a temporary object whose lifetime
>> would be shorter than the lifetime of the constructed object
>> Exporter( SEXP x ) : t(x){}
>>
>> Thanks in advance for your help
>> Regards
>> Robin
>>
>> <config.log>
>>
>>> Le 2 mai 2019 à 23:18, Simon Urbanek <[email protected]
>>> <mailto:[email protected]>> a écrit :
>>>
>>> Robin,
>>>
>>> this is unlikely a Mac issue, merely newer compilers give you better error
>>> handling pointing to issues in the code that may not have been detected
>>> before. If you post the code we can have a look.
>>>
>>> Also check your tools - the RcppArmadillo error points out that your
>>> compiler setup is broken since it cannot create runnable executable. Check
>>> config.log for details.
>>>
>>> Cheers,
>>> Simon
>>>
>>>
>>>
>>>> On May 2, 2019, at 1:04 PM, Robin GIRARD <[email protected]
>>>> <mailto:[email protected]>> wrote:
>>>>
>>>> Dear all, avec a Mac update today I obtained the following error while
>>>> compiling a package of mine using Rcpp :
>>>> /Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include/Rcpp/internal/Exporter.h:31:30:
>>>> error: reference member 't' binds to a temporary object whose lifetime
>>>> would be shorter than the lifetime of the constructed object
>>>> Exporter( SEXP x ) : t(x){}
>>>>
>>>> I’m pretty sure this has something to do with Mac, I updated the Command
>>>> line tool, I manage to compile simple examples with sourceRcpp (trying to
>>>> follow instructions here
>>>> http://thecoatlessprofessor.com/programming/r-compiler-tools-for-rcpp-on-macos/
>>>>
>>>> <http://thecoatlessprofessor.com/programming/r-compiler-tools-for-rcpp-on-macos/>)
>>>> I’m still trying to reproduce my error on a simple example.
>>>> I have R 3.6 and clang7 installed.
>>>>
>>>> Another strange point (might be connected) is that when I try to install
>>>> RcppArmadillo from source (as suggested in link above with
>>>> install.packages("", type = "source »)) it gives something about cross
>>>> compiling:
>>>>
>>>> checking whether the C++ compiler works... yes
>>>> checking for C++ compiler default output file name... a.out
>>>> checking for suffix of executables...
>>>> checking whether we are cross compiling... configure: error: in
>>>> `/private/var/folders/zt/7cz1y9md79l_h08bbqymt4w9z8xlw7/T/Rtmpgi7WQZ/R.INSTALL4f4110aa3f/RcppArmadillo':
>>>> configure: error: cannot run C++ compiled programs.
>>>> If you meant to cross compile, use `--host'.
>>>> See `config.log' for more details
>>>> ERROR: configuration failed for package ‘RcppArmadillo’
>>>>
>>>>
>>>> Thanks in advance for your help
>>>> Regards
>>>> Robin
>>>>
>>>>
>>>> _______________________________________________
>>>> Rcpp-devel mailing list
>>>> [email protected]
>>>> <mailto:[email protected]>
>>>> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>>>> <https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel>
>>>
>>
>
> _______________________________________________
> Rcpp-devel mailing list
> [email protected]
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
_______________________________________________
Rcpp-devel mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel