[R-pkg-devel] Problem (with complex.h?) under Microsoft Windows

Pierre Lafaye de Micheaux lafaye at dms.umontreal.ca
Fri Nov 13 17:24:41 CET 2015


Dear all,

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
lafaye at dms.umontreal.ca
http://www.biostatisticien.eu


	[[alternative HTML version deleted]]



More information about the R-package-devel mailing list