On Apr 4, 2007, at 2:46 PM, Jos Elkink wrote: > Thank you - that indeed fixes the first problem (about cout). It > still leaves the second error, though: > > main.cpp:52: error: brace-enclosed initializer used to initialize > 'R_NativePrimitiveArgType*' > > Any ideas about that? >
Sure, do what the compiler tells you to - use a reference instead: static R_NativePrimitiveArgType runSimulation_t[] = {INTSXP, INTSXP, INTSXP, REALSXP, REALSXP, REALSXP, INTSXP, INTSXP, INTSXP, INTSXP, INTSXP, INTSXP, REALSXP, REALSXP, INTSXP, INTSXP, INTSXP, INTSXP, INTSXP, INTSXP, INTSXP, INTSXP, INTSXP, INTSXP, REALSXP, REALSXP, REALSXP}; R_CMethodDef cMethods[] = { {"runSimulation", (DL_FUNC) &runSimulation, 27, runSimulation_t}, {NULL, NULL, 0} }; BTW have a look at registration.c in R sources for an elegant way to make this less error-prone when registering multiple functions (and looking at your argument list ... you should seriously consider using .Call :P) Cheers, Simon > > On 4/4/07, Simon Urbanek <[EMAIL PROTECTED]> wrote: >> Jos, >> >> you omitted the crucial part but my guess would be that all you have >> to do is to put #include <iostream> *before* R headers includes (R >> defines "length" which throws off iostream). >> Also note that using cout is not a good idea, because it is not >> captured by R, you should be using Rprintf instead. >> >> Cheers, >> Simon >> >> On Apr 4, 2007, at 1:44 PM, Jos Elkink wrote: >> >>> Hi, >>> >>> I am trying to use existing C++ code from R. I have no problems >>> compiling C code and using it in R, but with C++ I'm running into >>> problems. >>> >>> Here's the compiler output: >>> >>> Macintosh-10:~/Desktop/dissertation/Model - CPP version/R labguest$ >>> g++ -I/Library/Frameworks/R.framework/Resources/include >>> -I/Library/Frameworks/R.framework/Resources/include/i386 *.cpp >>> In file included from /usr/include/c++/4.0.0/bits/locale_facets.h: >>> 1533, >>> from /usr/include/c++/4.0.0/bits/basic_ios.h:44, >>> from /usr/include/c++/4.0.0/ios:50, >>> from /usr/include/c++/4.0.0/ostream:44, >>> from /usr/include/c++/4.0.0/iostream:44, >>> from main.cpp:5: >>> /usr/include/c++/4.0.0/bits/codecvt.h:217:45: error: macro "length" >>> passed 4 arguments, but takes just 1 >>> /usr/include/c++/4.0.0/bits/codecvt.h:216: error: expected ';' >>> before 'const' >>> /usr/include/c++/4.0.0/bits/codecvt.h:220: error: expected `;' >>> before 'int' >>> main.cpp:51: error: brace-enclosed initializer used to initialize >>> 'R_NativePrimitiveArgType*' >>> >>> >>> Line 51 refers to the standard part to register the function in R: >>> >>> R_CMethodDef cMethods[] = { >>> {"runSimulation", (void* (*) ()) &runSimulation, 27, {INTSXP, >>> INTSXP, INTSXP, REALSXP, REALSXP, REALSXP, INTSXP, INTSXP, INTSXP, >>> INTSXP, INTSXP, INTSXP, REALSXP, REALSXP, INTSXP, INTSXP, INTSXP, >>> INTSXP, INTSXP, INTSXP, INTSXP, INTSXP, INTSXP, INTSXP, REALSXP, >>> REALSXP, REALSXP}}, >>> {NULL, NULL, 0} >>> }; >>> >>> >>> I had to add the explicit cast of &runSimulation to get rid of one >>> compiler error, but do not know how to deal with this one. >>> Encapsulating this part of the code in >>> >>> extern "C" { >>> } >>> >>> has no effect. >>> >>> runSimulation is just a regular function, with a lot of int* and >>> double* parameters, and it is not part of a class. It does inside >>> create a class, though. >>> >>> Outline: >>> >>> void runSimulation(int *p_1 ... etc) { >>> >>> try { >>> CModel Model(); >>> Model.Run(); >>> } catch (CException& e) { >>> cout << "exception" << endl; >>> } >>> } >>> >>> Encapsulating this function in extern "C" also has no effect. >>> >>> Anyone any ideas what I should do? The system I am using is an >>> Intel-based Mac. >>> >>> Thanks in advance! >>> >>> Jos >>> >>> ______________________________________________ >>> R-devel@r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-devel >>> >>> >> >> > > > -- > Jos Elkink > PhD Candidate, Trinity College Dublin > HMDC Fellow, Harvard University > http://jaeweb.cantr.net > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel