Too bad you couldn't just use C++ std::complex, but that's a no-go if your function needs C linkage.
<http://stackoverflow.com/questions/1063406/c99-complex-support-with-visual-studio> suggests MS-specific topic, but answers explain more. Have you looked at RCpp package? ________________________________________ From: R-package-devel [r-package-devel-boun...@r-project.org] on behalf of Pierre Lafaye de Micheaux [laf...@dms.umontreal.ca] Sent: Friday, November 13, 2015 10:24 AM To: r-package-devel@r-project.org Subject: [R-pkg-devel] Problem (with complex.h?) under Microsoft Windows I created a new version of the package IndependenceTests where I call some C and Fortran functions (using the .C() or .Fortran() interface). It works perfectly under Linux, with gcc. No problem with R CMD check. I would like to upload this package on the CRAN. But when I first tried to use winbuilder, I got an error with the following message: * installing *source* package 'IndependenceTests' ... ** libs *** arch - i386 g++ -I"D:/RCompile/recent/R/include" -DNDEBUG -I"d:/RCompile/r-compiling/local/local320/include" -O2 -Wall -mtune=core2 -c Cnhat.cpp -o Cnhat.o Cnhat.cpp:9:89: error: 'complex' has not been declared Cnhat.cpp:9:105: error: two or more data types in declaration of 'res' .... ..... etc. I think I understand that there is a problem (only under Windows though) with the complex type. The beginning of my file Cnhat.cpp is as follows: 1. #include <R.h> 2. #include "Rmath.h" 3. #include <complex.h> 4. #include <iostream> 5. using namespace std; 6. 7. extern"C" { 8. 9. void CnhatC(double *vecs, double *vect, double *X, int *n, int *q, int *p, int *vecd, complex double *res) { 10. 11. void phinhatReturn(double *vect1, double *vect2, double *vect3, double *X, int *q, int *n, double _Complex *res1, double _Complex *res2, double _Complex *res3); 12. double _Complex tmp2, prod1 = 1.0 + 0.0*_Complex_I, prod2 = 1.0 + 0.0*_Complex_I, somme = 0.0 + 0.0*_Complex_I; 13. int indbeginblocl, l, i, *vecdl, k, j; 14. double *vecsl, *mvectl, *diffvecsvectl, *Xl; 15. double _Complex *res1, *res2, *res3; 16. vecdl = new int[1]; 17. res1 = new _Complex double[1]; .... ..... etc. As you can see, there seem to be some problem (on line 9.) with: complex double *res Could you please point me to something (e.g., another package) that might help me solve the problem? If possible, I would like to avoid invest too much time using the new .Call() interface because I am quite familiar with the old .C(). And also I am not even sure if it would help solving the problem. Best regards, Pierre L. -- Pierre Lafaye de Micheaux Adresse courrier: Université de Montréal Pavillon André-Aisenstadt Département de Mathématiques et Statistique CP 6128 Succursale Centre-ville Montréal Qc H3C 3J7 CANADA Adresse physique: Département de Mathématiques et Statistique Bureau 4249, Pavillon André-Aisenstadt 2920, chemin de la Tour Montréal, Québec H3T 1J4 CANADA Tél.: (00-1) 514-343-6607 / Fax: (00-1) 514-343-5700 laf...@dms.umontreal.ca http://www.biostatisticien.eu [[alternative HTML version deleted]] ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel The information contained in this e-mail message may be privileged, confidential, and/or protected from disclosure. This e-mail message may contain protected health information (PHI); dissemination of PHI should comply with applicable federal and state laws. If you are not the intended recipient, or an authorized representative of the intended recipient, any further review, disclosure, use, dissemination, distribution, or copying of this message or any attachment (or the information contained therein) is strictly prohibited. If you think that you have received this e-mail message in error, please notify the sender by return e-mail and delete all references to it and its contents from your systems. ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel