From: toyofuku@... Date: 1997-08-13T20:09:40+09:00 Subject: [ruby-list:3676] MSVC compile error 豊福@パパイヤです。 Ruby Jed を Windows95 の MSVC でコンパイルして みました。MSVC用の config.h をどうすればよいか わからなかったので、Linux用の config.h をその まま使ってエラーが出るたび変更していきました。 コンパイルオプションは Jed についてくる PC用の 次のものを使いました。 /nologo /W3 /YX /O2 /D "NDEBUG" /D _X86_ /D "_WINDOWS" /D "__WIN32__" /D "mswindows" /D "msdos" /D "VC32" /D "MSWINDOWS" /D "pc_system" /I "." /D "FLOAT_TYPE" /ML ruby のバージョンは 1.0-970701 です。 以下コンパイルを通すために行なった主な項目です。 間違いやもっとよい方法があったら教えて下さい。 ・unistd.h などないファイルに対応する HAVE_UNISTD_H などを define しないようにした。 でも数箇所 #ifdef HAVE_... なしで include しているところもあったのでそこはコメントアウト した。 ・R_OK, W_OK, X_OK がない 4, 2, 1 に define した。 ・S_ISGID, S_IXUGO がない linux で定義されている値に define した。 ・gid_t がない GETGROUPS_T には short を define した。 ・DIR がない dir.c, glob.c がコンパイルできない。 ・fd_set がない winsock.h を include した。 ・eval.c に struct timeval がない sys/time.h もないので代りに winsock.h を include した。 (file.c io.c process.c time.c では自前で struct timeval が定義されている。ただし file.c では struct が stuct になっている。) ・OpenFile という名前が winbase.h のものとぶつかる 名前を変えた。 ・process.c の struct wail_data 定義の閉括弧の後に セミコロンがない ・process.c の f_wait() の中の status = data.status; でエラー state = data.status; にした。 ・SIGHUP, SIGQUIT がない コメントアウトした。 などやって取りあえず dir.c と glob.c 以外は .obj ができました。 dir.obj と glob.obj 以外をリンクしたときの 未定義関数エラーを最後につけておきます。このうち気に なっているのは ・ReadDataPending READ_DATA_PENDING() 関係 ・__WSAFDIsSet@8 winsock.h の FD_ISSET() 関係 ・alloca _alloca はあるみたい ・select@20 winsock.h で PASCAL FAR select(...) ・strcasecmp 標準関数なんですか? です。 これら以外の関数はどのライブラリをリンクすれば よいでしょうか。 未定義関数一覧 ReadDataPending S_ISBLK S_ISFIFO __WSAFDIsSet@8 _wait alloca chown crypt fchmod fchown fcntl flock fork ftruncate getegid geteuid getgid getgroups getpgrp getppid gettimeofday getuid ioctl kill link lstat pipe random readlink select@20 setegid setenv seteuid setpgrp setregid setreuid sigblock sigmask sigsetmask sleep strcasecmp symlink syscall truncate utimes vfork wait --- 豊福@パパイヤ unbound@papaya.juice.or.jp toyofuku@juice.or.jp