[Rcpp-devel] Rcpp on R 2.12.0 / windows / gcc 4.5

Uwe Ligges ligges at statistik.tu-dortmund.de
Fri Oct 1 20:52:52 CEST 2010



On 30.09.2010 21:46, Romain Francois wrote:
> If I replace unit tests with this simple one:
>
>
> test.dummy2 <- function(){
> fx <- cxxfunction( , 'return R_NilValue ; ', plugin = "Rcpp", verbose =
> TRUE )
> fx()
> }
>
> I get this problem:
>
> Executing test function test.dummy2 ... >> setting environment variables:
> PKG_LIBS = C:/Users/romain/svn/rcpp/pkg/Rcpp.Rcheck/Rcpp/lib/x64/libRcpp.a
>
>  >> LinkingTo : Rcpp
> CLINK_CPPFLAGS = -I"C:/Users/romain/svn/rcpp/pkg/Rcpp.Rcheck/Rcpp/include"
>
>  >> Program source :
>
> 1 : // includes from the plugin
> 2 :
> 3 : #include <Rcpp.h>
> 4 :
> 5 :
> 6 : #ifndef BEGIN_RCPP
> 7 : #define BEGIN_RCPP
> 8 : #endif
> 9 :
> 10 : #ifndef END_RCPP
> 11 : #define END_RCPP
> 12 : #endif
> 13 :
> 14 : using namespace Rcpp;
> 15 :
> 16 :
> 17 : // user includes
> 18 :
> 19 :
> 20 : // declaration
> 21 : extern "C" {
> 22 : SEXP file652d570b( ) ;
> 23 : }
> 24 :
> 25 : // definition
> 26 :
> 27 : SEXP file652d570b( ){
> 28 : BEGIN_RCPP
> 29 : return R_NilValue ;
> 30 : END_RCPP
> 31 : }
> 32 :
> 33 :
> Compilation argument:
> c:\R\R-212~1.0AL/bin/x64/R CMD SHLIB file652d570b.cpp 2>
> file652d570b.cpp.err.txt
> g++ -I"c:/R/R-212~1.0AL/include"
> -I"C:/Users/romain/svn/rcpp/pkg/Rcpp.Rcheck/Rcpp/include" -O2 -Wall -c
> file652d570b.cpp -o file652d570b.o
> g++ -shared -s -static-libgcc -o file652d570b.dll tmp.def file652d570b.o
> C:/Users/romain/svn/rcpp/pkg/Rcpp.Rcheck/Rcpp/lib/x64/libRcpp.a
> -Lc:/R/R-212~1.0AL/bin/i386 -lR
> Timing stopped at: 0 0.02 2.41
> Error in inDL(x, as.logical(local), as.logical(now), ...) :
> unable to load shared object
> 'C:/Users/romain/AppData/Local/Temp/Rtmp5Bzbzb/file652d570b.dll':
> LoadLibrary failure: %1 n’est pas une application Win32 valide.


No surprise:

You mixed 64-bit R (called from bin/x64) with 32-bit gcc (gcc without 
prefix)...
I guess you used the wrong path to the R executable and got the wrong one?

Uwe


>
> If I run this from R --arch 64 it works fine:
>
>
>
>
> $ R --arch 64
>
> R version 2.12.0 alpha (2010-09-29 r53067)
> Copyright (C) 2010 The R Foundation for Statistical Computing
> ISBN 3-900051-07-0
> Platform: x86_64-pc-mingw32/x64 (64-bit)
>
> R est un logiciel libre livré sans AUCUNE GARANTIE.
> Vous pouvez le redistribuer sous certaines conditions.
> Tapez 'license()' ou 'licence()' pour plus de détails.
>
> R est un projet collaboratif avec de nombreux contributeurs.
> Tapez 'contributors()' pour plus d'information et
> 'citation()' pour la façon de le citer dans les publications.
>
> Tapez 'demo()' pour des démonstrations, 'help()' pour l'aide
> en ligne ou 'help.start()' pour obtenir l'aide au format HTML.
> Tapez 'q()' pour quitter R.
>
>  > fx <- cxxfunction( , 'return R_NilValue ; ', plugin = "Rcpp", verbose
> = TRUE$
> Erreur : impossible de trouver la fonction "cxxfunction"
>  > fx()
> Erreur : impossible de trouver la fonction "fx"
>  > require( Rcpp )
> Le chargement a nécessité le package : Rcpp
>  > require( inline )
> Le chargement a nécessité le package : inline
>  >
>  > fx <- cxxfunction( , 'return R_NilValue ; ', plugin = "Rcpp", verbose
> = TRUE$
>  >> setting environment variables:
> PKG_LIBS = c:/R/R-2.12.0alpha/library/Rcpp/lib/x64/libRcpp.a
>
>  >> LinkingTo : Rcpp
> CLINK_CPPFLAGS = -I"c:/R/R-2.12.0alpha/library/Rcpp/include"
>
>  >> Program source :
>
> 1 : // includes from the plugin
> 2 :
> 3 : #include <Rcpp.h>
> 4 :
> 5 :
> 6 : #ifndef BEGIN_RCPP
> 7 : #define BEGIN_RCPP
> 8 : #endif
> 9 :
> 10 : #ifndef END_RCPP
> 11 : #define END_RCPP
> 12 : #endif
> 13 :
> 14 : using namespace Rcpp;
> 15 :
> 16 :
> 17 : // user includes
> 18 :
> 19 :
> 20 : // declaration
> 21 : extern "C" {
> 22 : SEXP file14357889( ) ;
> 23 : }
> 24 :
> 25 : // definition
> 26 :
> 27 : SEXP file14357889( ){
> 28 : BEGIN_RCPP
> 29 : return R_NilValue ;
> 30 : END_RCPP
> 31 : }
> 32 :
> 33 :
> Compilation argument:
> c:\R\R-2.12.0alpha/bin/x64/R CMD SHLIB file14357889.cpp 2>
> file14357889.cpp.err.txt
> x86_64-w64-mingw32-g++ -I"c:/R/R-212~1.0AL/include"
> -I"c:/R/R-2.12.0alpha/library/Rcpp/include" -O2 -Wall -c fil
> e14357889.cpp -o file14357889.o
> x86_64-w64-mingw32-g++ -shared -s -static-libgcc -o file14357889.dll
> tmp.def file14357889.o c:/R/R-2.12.0alpha/library/R
> cpp/lib/x64/libRcpp.a -Lc:/R/R-212~1.0AL/bin/x64 -lR
>
>
>
>
> Not sure what my next move is.
>
> Romain
>
>
> Le 30/09/10 21:21, Romain Francois a écrit :
>> I tried now with the newer R alpha (rev 53067) and I'm afraid I still
>> get the same errors.
>>
>>
>> When however I run the tests manually, everything goes fine:
>>
>>
>> $ R --arch 64
>> > require( Rcpp )
>> > require( inline )
>> > require( RUnit )
>> # for example
>> > runTestFile( "Rcpp/inst/unitTests/runit.sugar.R" )
>>
>>
>> Executing test function test.sugar.abs ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.all.equal ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.all.greater ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.all.greater.or.equal ... done
>> successfully.
>>
>>
>>
>> Executing test function test.sugar.all.less ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.all.less.or.equal ... done
>> successfully.
>>
>>
>>
>> Executing test function test.sugar.all.not.equal ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.all.one.equal ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.all.one.greater ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.all.one.greater.or.equal ... done
>> successfully.
>>
>>
>>
>> Executing test function test.sugar.all.one.less ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.all.one.less.or.equal ... done
>> successfully.
>>
>>
>>
>> Executing test function test.sugar.all.one.not.equal ... done
>> successfully.
>>
>>
>>
>> Executing test function test.sugar.any.equal ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.any.equal.not ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.any.greater ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.any.greater.or.equal ... done
>> successfully.
>>
>>
>>
>> Executing test function test.sugar.any.isna ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.any.less ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.any.less.or.equal ... done
>> successfully.
>>
>>
>>
>> Executing test function test.sugar.any.not.equal ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.assignment ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.beta ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.ceil ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.choose ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.complex ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.constructor ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.diag ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.diff ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.divides ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.exp ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.floor ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.gamma ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.head ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.ifelse ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.isna ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.isna.isna ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.lapply ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.lbeta ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.lchoose ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.log1p ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.matrix.outer ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.matrix.row ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.minus ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.plus ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.plus.all ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.plus.seqlen ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.pmax ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.pmax.one ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.pmin ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.pmin.one ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.pow ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.psigamma ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.Range ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.rep ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.rev ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.sapply ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.sapply.list ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.sapply.rawfun ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.sapply.square ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.seqlaong ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.seqlen ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.sign ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.tail ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.times ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.unary.minus ... done successfully.
>>
>>
>>
>> Executing test function test.sugar.wrap ... done successfully.
>>
>> Number of test functions: 67
>> Number of errors: 0
>> Number of failures: 0
>>
>> > .Platform
>> $OS.type
>> [1] "windows"
>>
>> $file.sep
>> [1] "/"
>>
>> $dynlib.ext
>> [1] ".dll"
>>
>> $GUI
>> [1] "RTerm"
>>
>> $endian
>> [1] "little"
>>
>> $pkgType
>> [1] "win.binary"
>>
>> $path.sep
>> [1] ";"
>>
>> $r_arch
>> [1] "x64"
>>
>>
>> Romain
>>
>> Le 30/09/10 15:04, Uwe Ligges a écrit :
>>>
>>>
>>> On 30.09.2010 14:17, Romain Francois wrote:
>>>> Hmm. This failed on win builder.
>>>>
>>>>> Dear package maintainer,
>>>>>
>>>>> this notification has been generated automatically.
>>>>> Your package Rcpp_0.8.6.3.tar.gz has been built (if working) and
>>>>> checked for Windows.
>>>>> Please check the log files and (if working) the binary package at:
>>>>> http://win-builder.r-project.org/7zee4m5kHIjB
>>>>> The files will be removed after roughly 72 hours.
>>>>> Installation time in seconds: 87
>>>>> Check time in seconds: 2385
>>>>> Check result: ERROR
>>>>> R version 2.12.0 alpha (2010-09-27 r53048) (32+64-bit)
>>>>
>>>> I initially tested it with
>>>>
>>>> $ Rscript --arch 64 -e "Rcpp:::test()"
>>>>
>>>> which worked fine.
>>>
>>> Brian just said he fixed it. Can you try with the very recent svn from
>>> minutes (or few hours) ago?
>>>
>>> Best,
>>> Uwe
>>>
>>>
>>>> R CMD check gives me the same failures as win builder... more work
>>>> required then :-(
>>>>
>>>>
>>>> Le 30/09/10 13:45, Romain Francois a écrit :
>>>>> Hello,
>>>>>
>>>>> I spent some of my time this morning tweaking Rcpp so that it builds
>>>>> and
>>>>> checks on the R 2.12.0 alpha (the latest snapshot) on windows with the
>>>>> latest Rtools on both archs.
>>>>>
>>>>> It appears to work fine at the latest svn revision (rev 2259).
>>>>>
>>>>> I've sent it to the R-devel branch of win builder and posted a tarball
>>>>> here: http://addictedtor.free.fr/misc/rcpp/Rcpp_0.8.6.3.tar.gz
>>>>> I'd appreciate if other people would also try it, I'm always a bit
>>>>> insecure when it comes to windows.
>>>>>
>>>>> Our aim is to synchronize release of Rcpp 0.8.7 with the release of R
>>>>> 2.12.0
>>>>>
>>>>>
>>>>> Issues were:
>>>>> - the hello function in the module that is part of the testRcppmodule
>>>>> package:
>>>>>
>>>>> std::string hello() {
>>>>> throw std::range_error( "boom" ) ;
>>>>> }
>>>>>
>>>>> This makes windows (or gcc 4.5, or something else) unhappy. This is
>>>>> probably an issue with throw declarations, exceptions accross
>>>>> translation unites, etc ... as we have seen before. For now, I
>>>>> commented
>>>>> it out. This is low priority.
>>>>>
>>>>> - fast indexing, i.e. as provided by the Rcpp::Fast class makes
>>>>> windows
>>>>> unhappy, so I am only using Fast on other platforms. See the #ifndef
>>>>> WIN32 in the Extractor.h file. This seems like a good enough
>>>>> workaround
>>>>> for now. People who want faster indexing on windows are welcome to
>>>>> submit a (((tested))) patch. Note that this is possible that the newer
>>>>> compiler produces better code, so the need for the Rcpp::Fast trick
>>>>> might not be needed at all.
>>>>>
>>>>> Romain
>>
>>
>
>


More information about the Rcpp-devel mailing list