R 3.1.2
Windows 7

Colleagues

I am working with c code that reads sas7bdat files into R.  I have been 
successful in compiling and running the code in both OS X and Windows.  
Recently, the author of the c code added code that calls iconv.h (in order to 
convert encodings).  Using the new version of the c code, I can run compile and 
run the code in OS X without problems.  However, when I run the code in 
Windows, I encounter a series of warnings, followed by what appear to be errors 
— and the code is not compiled.  

I have installed the latest version of Rtools and I have set the path as 
follows:
        set PATH=c:\Rtools\bin;c:\Rtools\gcc-4.6.3\bin;c:\program files 
(c86)\gnuwin32\bin;c:\MiKTeX\miktex\bin;%R32%;c:\windows;c:\windows\system32
where R32 is the path to the 32-but version of R

The command that I execute is:
        R CMD SHLIB -o ../compiled/Windows32.so ConvertSAS.c CKHashTable.c 
readstat_convert.c readstat_bits.c readstat_io.c readstat_sas.c)

I get a series of warnings:
> gcc -m32 -I"C:/PROGRA~1/R/R-31~1.2/include" -DNDEBUG     
> -I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O3 -Wall  -std=gnu99 
> -mtune=core2 -c ConvertSAS.c -o ConvertSAS.o
> gcc -m32 -I"C:/PROGRA~1/R/R-31~1.2/include" -DNDEBUG     
> -I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O3 -Wall  -std=gnu99 
> -mtune=core2 -c CKHashTable.c -o CKHashTable.o
> gcc -m32 -I"C:/PROGRA~1/R/R-31~1.2/include" -DNDEBUG     
> -I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O3 -Wall  -std=gnu99 
> -mtune=core2 -c readstat_convert.c -o readstat_convert.o
> readstat_convert.c: In function 'readstat_convert':
> readstat_convert.c:23:9: warning: passing argument 2 of 'libiconv' from 
> incompatible pointer type [enabled by default]
> iconv.h:92:37: note: expected 'const char **' but argument is of type 'char 
> **'
> gcc -m32 -I"C:/PROGRA~1/R/R-31~1.2/include" -DNDEBUG     
> -I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O3 -Wall  -std=gnu99 
> -mtune=core2 -c readstat_bits.c -o readstat_bits.o
> readstat_bits.c: In function 'byteswap_float':
> readstat_bits.c:59:5: warning: dereferencing type-punned pointer will break 
> strict-aliasing rules [-Wstrict-aliasing]
> readstat_bits.c:60:5: warning: dereferencing type-punned pointer will break 
> strict-aliasing rules [-Wstrict-aliasing]
> readstat_bits.c: In function 'byteswap_double':
> readstat_bits.c:64:5: warning: dereferencing type-punned pointer will break 
> strict-aliasing rules [-Wstrict-aliasing]
> readstat_bits.c:65:5: warning: dereferencing type-punned pointer will break 
> strict-aliasing rules [-Wstrict-aliasing]
> gcc -m32 -I"C:/PROGRA~1/R/R-31~1.2/include" -DNDEBUG     
> -I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O3 -Wall  -std=gnu99 
> -mtune=core2 -c readstat_io.c -o readstat_io.o
> gcc -m32 -I"C:/PROGRA~1/R/R-31~1.2/include" -DNDEBUG     
> -I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O3 -Wall  -std=gnu99 
> -mtune=core2 -c readstat_sas.c -o readstat_sas.o
> readstat_sas.c: In function 'sas_read_header':
> readstat_sas.c:204:20: warning: variable 'a2' set but not used 
> [-Wunused-but-set-variable]
> readstat_sas.c: In function 'sas_parse_page_pass1':
> readstat_sas.c:788:23: warning: variable 'subheader_type' set but not used 
> [-Wunused-but-set-variable]
> readstat_sas.c:770:14: warning: variable 'page_type' set but not used 
> [-Wunused-but-set-variable]
> readstat_sas.c: In function 'sas_parse_page_pass2':
> readstat_sas.c:861:27: warning: variable 'subheader_type' set but not used 
> [-Wunused-but-set-variable]
> readstat_sas.c: In function 'parse_sas7bdat':
> readstat_sas.c:1029:9: warning: implicit declaration of function 'dprintf' 
> [-Wimplicit-function-declaration]
> 
followed by a series of errors:
> gcc -m32 -shared -s -static-libgcc -o ../compiled/Windows32.so tmp.def 
> ConvertSAS.o CKHashTable.o readstat_convert.o readstat_bits.o readstat_io.o 
> readstat_sas.o -Ld:/RCompile/CRANpkg/extralibs64/local/lib/i386 
> -Ld:/RCompile/CRANpkg/extralibs64/local/lib -LC:/PROGRA~1/R/R-31~1.2/bin/i386 
> -lR
> readstat_convert.o:readstat_convert.c:(.text+0x42): undefined reference to 
> `_imp__libiconv'
> readstat_sas.o:readstat_sas.c:(.text+0x10b5): undefined reference to 
> `_imp__libiconv_close'
> readstat_sas.o:readstat_sas.c:(.text+0x1126): undefined reference to 
> `_imp__libiconv_open'
> readstat_sas.o:readstat_sas.c:(.text+0x1808): undefined reference to `dprintf'
> readstat_sas.o:readstat_sas.c:(.text+0x1da1): undefined reference to 
> `_imp__libiconv_open'
> readstat_sas.o:readstat_sas.c:(.text+0x1de4): undefined reference to 
> `_imp__libiconv_close'
> collect2: ld returned 1 exit status
> 
The errors all reference libiconv.   Note that the first line in the errors 
references extralibs64.  I don’t understand where this is coming from since the 
gcc command is created by R CMD SHLIB using the 32-fit version of R.  I 
replaced both instance of extralibs64 with extralibs32 but the identical error 
messages appear.  

Does anyone have an idea as to the problem here? 

Any help would be much appreciated.

Dennis

Dennis
Dennis Fisher MD
P < (The "P Less Than" Company)
Phone: 1-866-PLessThan (1-866-753-7784)
Fax: 1-866-PLessThan (1-866-753-7784)
www.PLessThan.com

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to