[Rcpp-devel] Question regarding integrating preexisting C++ code via Rcpp

Simon Fuller simonfuller9 at gmail.com
Tue Oct 11 00:01:33 CEST 2011


Hello,

I am getting some problems further down the line. It seems to happen when I
am including a std header in my own class, and when it itself includes a
header. Which suggests the problem is not with including headers in
general.

When it is reading my header, it gets this error in fstream:

In file included from /usr/include/c++/4.5/fstream:42:0,
                 from
/home/simon/College/PackageOne/src/MyClass/MyClass.h:6,
                 from file8ffc305.cpp:37:
/usr/include/c++/4.5/bits/codecvt.h: In function ‘SEXPREC*
file8ffc305(SEXPREC*, SEXPREC*)’:
/usr/include/c++/4.5/bits/codecvt.h:42:1: error: expected ‘=’ before
‘__attribute__’
/usr/include/c++/4.5/bits/codecvt.h:42:1: error: expected identifier before
‘__attribute__’
/usr/include/c++/4.5/bits/codecvt.h:42:1: error: expected ‘;’ before
‘__attribute__’
/usr/include/c++/4.5/bits/codecvt.h:42:1: error: expected primary-expression
before ‘__attribute__’
/usr/include/c++/4.5/bits/codecvt.h:42:1: error: expected ‘;’ before
‘__attribute__’

In fstream, line 42 is indeed: #include <bits/codecvt.h>

I checked /usr/include/c++/4.5/bits/codecvt.h:42:1:

and this is line 42 of codecvt.h:

_GLIBCXX_BEGIN_NAMESPACE(std)

I googled this function, and I am wondering if it might be a compatibility
issue, as this sometimes seems to be cited in this regard in forums. I
really do not know myself. Has anyone any suggestions?

Thanks,

Simon




On Mon, Oct 10, 2011 at 11:09 AM, Simon Fuller <simonfuller9 at gmail.com>wrote:h

> Hello,
>
> I have just joined the mailing list.
>
> I was hoping you might be able to help me with a question.
>
> I am new to Rcpp, have some experience with both R and C++, but very little
> experience with integrating languages.
>
> I hope to use Rcpp to develop code over the next few years. However, to
> begin with, I have some preexisting C++ classes that I would like to make
> available to R.
>
> I have read the documentation that I can find, but I do not know which is
> the best approach to take.
>
> I only, in principle, need *one method* to interact with the classes -
> there then follows a fairly arduous process using different tree structures
> each of which have aggregate classes, but only a single double needs to be
> returned to R.
>
> I was therefore hoping to simply call a C++ wrapper function in-line,
> remotely, which in turn called my classes, but that does not work. I get an:
> "expected unqualified-id before ‘extern’ " error after my includes, at:
> RcppExport SEXP..  at the start of my method declaration. (I can post code
> if this approach is not a complete dead end)
>
> So my two questions are: is there a quick way of prototyping this? i.e. to
> get R to invoke my classes through an rcpp intermediary.
>
> If there is not a quick way to do this, what is the best approach? Do I
> need to, and if so how do I, make my classes accessible to Rcpp. Because my
> whole hope here is to use preexisting code as swiftly as possible, 'easiest'
> and 'quickest' are almost synonyms for 'best' in my question.
>
> If someone could point me in the direction of some example code where Rcpp
> invokes user classes this would be great.
>
> My apologies if my question has been covered before, but I would really
> appreciate some advice on what is and is not possible, and some strategic
> advice on the best (easiest and quickest) approach.
>
> Thank you for your help. It is deeply appreciated.
>
> Simon
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20111010/d64e46d1/attachment.htm>


More information about the Rcpp-devel mailing list