[Rcpp-devel] Defining template specialisation for wrap on Windows 64bit (Compilation error: 'result_type' does not name a type)
Romain Francois
romain at r-enthusiasts.com
Tue Oct 1 17:46:08 CEST 2013
Renaud,
Are you by any chance using cywin ?
This is not likely to fly.
To check if this is an octave problem, what happens when you do:
> evalCpp( "2+2" )
Romain
Le 01/10/13 17:20, Renaud Gaujoux a écrit :
> Hi,
>
> I wanted to "quickly" port my package RcppOctave to run on Windows but
> it turned out trickier than expected :(
>
> I am getting compilation errors (8750 lines of errors - see first line below).
> The code defines a specialisation for wrap, following the
> non-intrusive way described in the vignette. Everything has always
> worked smoothly on Linux (Ubuntu 13.10). On Windows there seems to be
> some kind of conflict which messes up with type definitions, and this
> happens as soon as I include Rcpp.h.
> I noticed the "redefined" warnings before the error, but I am not sure
> how this can break compilation that much.
>
> Does anybody have a hint on this puzzling issue?
> Thank you.
>
> Bests,
> Renaud
>
> Minimal C++ code that produces the error:
>
> //rcpp_octave.h
>
> #ifndef _RcppOctave_RCPP_OCTAVE_H
> #define _RcppOctave_RCPP_OCTAVE_H
>
> #include <RcppCommon.h>
>
> // Octave libraries
> #include <octave/oct.h>
>
> // declaring the specialization
> namespace Rcpp {
> template <> SEXP wrap( const octave_value& );
> }
>
> // this must appear after the specialization,
> // otherwise the specialization will not be seen by Rcpp types
> #include <Rcpp.h>
> #endif
>
> ####
>
> //rcpp_octave.cpp
>
> #include "rcpp_octave.h"
>
> void dummy(){
>
> }
>
>
> ### COMPILATION LOG ###
>
> [1] "* installing *source* package 'RcppOctave' ..."
> [2] "cygwin warning:"
> [3] " MS-DOS style path detected: C:/R/R-30~1.2/bin/x64/R"
> [4] " Preferred POSIX equivalent is:
> /cygdrive/c/R/R-30~1.2/bin/x64/R"
> [5] " CYGWIN environment variable option \"nodosfilewarning\"
> turns off this warning."
> [6] " Consult the user's guide for more details about POSIX
> paths:"
> [7] " http://cygwin.com/cygwin-ug-net/using.html#using-pathnames"
> [8] "-lR: not found"
> [9] "Checking whether R is a shared library... YES"
> [10] "Using R LDFLAGS: -LC:/R/R-30~1.2/bin/x64 -lR"
> [11] "Using R CPPFLAGS: -IC:/R/R-30~1.2/include
> -IC:/R/R-30~1.2/include/x64"
> [12] "Checking Octave include directory... "
> [13] " C:\\Octave\\Octave3.6.4_gcc4.6.2\\include\\octave-3.6.4\\octave"
> [14] " C:\\Octave\\Octave3.6.4_gcc4.6.2\\include"
> [15] "Checking Octave library directory...
> C:\\Octave\\Octave3.6.4_gcc4.6.2\\lib\\octave\\3.6.4"
> [16] "Checking Octave version... 3.6.4"
> [17] "Checking whether to infer output names for Octave function (>=
> 3.4.3)... YES"
> [18] "RcppOctave Octave module directory...
> z:/projects/RcppOctave/libwin/RcppOctave/modules"
> [19] "** libs"
> [20] "Warning: this package has a non-empty 'configure.win' file,"
> [21] "so building only the main architecture"
> [22] ""
> [23] "cygwin warning:"
> [24] " MS-DOS style path detected: C:/R/R-30~1.2/etc/x64/Makeconf"
> [25] " Preferred POSIX equivalent is:
> /cygdrive/c/R/R-30~1.2/etc/x64/Makeconf"
> [26] " CYGWIN environment variable option \"nodosfilewarning\"
> turns off this warning."
> [27] " Consult the user's guide for more details about POSIX
> paths:"
> [28] " http://cygwin.com/cygwin-ug-net/using.html#using-pathnames"
> [29] "g++ -m64 -I\"C:/R/R-30~1.2/include\" -DNDEBUG
> -IC:/R/R-3.0.2/library/Rcpp/include -DOCT_POST_3_4_0=1
> -I\"C:\\Octave\\Octave3.6.4_gcc4.6.2\\include\"
> -I\"C:\\Octave\\Octave3.6.4_gcc4.6.2\\include\\octave-3.6.4\\octave\"
> -I\"C:\\Octave\\Octave3.6.4_gcc4.6.2\\include\\octave-3.6.4\\octave/../\"
> -I\"C:/R/R-3.0.2/library/Rcpp/include\"
> -I\"d:/RCompile/CRANpkg/extralibs64/local/include\" -O2 -Wall
> -mtune=core2 -c rcpp_octave.cpp -o rcpp_octave.o"
> [30] "In file included from
> C:\\Octave\\Octave3.6.4_gcc4.6.2\\include\\octave-3.6.4\\octave/../octave/oct.h:31:0,"
> [31] " from rcpp_octave.h:10,"
> [32] " from rcpp_octave.cpp:21:"
> [33] "C:\\Octave\\Octave3.6.4_gcc4.6.2\\include\\octave-3.6.4\\octave/../octave/config.h:2764:0:
> warning: \"_WIN32_WINNT\" redefined [enabled by default]"
> [34] "c:\\rtools\\gcc-4.6.3\\bin\\../lib/gcc/i686-w64-mingw32/4.6.3/../../../../i686-w64-mingw32/include/_mingw.h:244:0:
> note: this is the location of the previous definition"
> [35] "In file included from
> C:/R/R-3.0.2/library/Rcpp/include/Rcpp.h:50:0,"
> [36] " from rcpp_octave.h:25,"
> [37] " from rcpp_octave.cpp:21:"
> [38] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Language.h:156:21:
> error: 'result_type' does not name a type"
> [39] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Language.h:161:24:
> error: ISO C++ forbids declaration of 'operator()' with no type
> [-fpermissive]"
> [40] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Language.h: In member
> function 'int Rcpp::fixed_call< <template-parameter-1-1>
>> ::operator()()':"
> [41] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Language.h:162:41:
> error: no matching function for call to 'as(SEXPREC*&)'"
> [42] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Language.h:162:41:
> note: candidate is:"
> [43] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/as.h:144:29: note:
> template<class T> T Rcpp::as(SEXP)"
> [44] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Language.h: At global
> scope:"
> [45] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Language.h:170:56:
> error: template argument 2 is invalid"
> [46] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Language.h:176:41:
> error: ISO C++ forbids declaration of 'operator()' with no type
> [-fpermissive]"
> [47] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Language.h: In member
> function 'int Rcpp::unary_call<T, <template-parameter-1-2>
>> ::operator()(const T&)':"
> [48] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Language.h:178:41:
> error: no matching function for call to 'as(SEXPREC*&)'"
> [49] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Language.h:178:41:
> note: candidate is:"
> [50] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/as.h:144:29: note:
> template<class T> T Rcpp::as(SEXP)"
> [51] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Language.h: At global
> scope:"
> [52] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Language.h:187:62:
> error: template argument 3 is invalid"
> [53] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Language.h:193:52:
> error: ISO C++ forbids declaration of 'operator()' with no type
> [-fpermissive]"
> [54] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Language.h: In member
> function 'int Rcpp::binary_call<T1, T2, <template-parameter-1-3>
>> ::operator()(const T1&, const T2&)':"
> [55] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Language.h:196:41:
> error: no matching function for call to 'as(SEXPREC*&)'"
> [56] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Language.h:196:41:
> note: candidate is:"
> [57] "C:/R/R-3.0.2/library/Rcpp/include/Rcpp/as.h:144:29: note:
> template<class T> T Rcpp::as(SEXP)"
> [58] "In file included from
> C:/R/R-3.0.2/library/Rcpp/include/Rcpp/Module.h:85:0,"
> [59] " from
> C:/R/R-3.0.2/library/Rcpp/include/Rcpp.h:63,"
> [60] " from rcpp_octave.h:25,"
> [61] " from rcpp_octave.cpp:21:"
> _______________________________________________
> 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
>
--
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
More information about the Rcpp-devel
mailing list