From: Katsuyuki Komatsu Date: 2000-02-16T23:54:23+09:00 Subject: [ruby-dev:9231] RubyCRT.dll (Re: xmalloc() in Windows) 小松です。 In the message of [ruby-dev:9111] Re: xmalloc() in Windows on 2000/2/4 22:29:43 Katsuyuki Komatsu wrote: >でも、こうやってC Runtimeに入っているものを入れていくときりがないか。 >そろそろ、MSVCRT.DLL化かRubyCRT.dllの導入を考えないと。 RubyCRT.dllを作り、それを使ってRubyも作ってみました。 Rubyにいくつか変更が必要でしたが、そちらのパッチは後ほど。 ところで、RubyCRT.dllは配布できるんでしょうかね? PerlCRT.dllがCPANに登録されているのを見ると、大丈夫そうですが。 以下は、RubyCRT.dllの作成手順です。 パスは適当に読み替えてください。 1. C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRCを 適当な場所、たとえばC:\lang\RubyCRTにコピーします。 2. サンプルの.DEF等を実際に使用するファイルにコピー(あるいは移動) します。 cd C:\lang\RubyCRT copy ext_mkf Makefile copy ext_mkf.inc Makefile.inc copy ext_mkf.sub Makefile.sub copy _SAMPLE_.RC RubyCRT.RC copy SAMPLE_I.RC MSVCIRT.RC copy SAMPLE_P.RC MSVCP60.RC copy SAMPLE_I.DEF MSVCIRT.DEF copy SAMPLD_I.DEF MSVCIRTD.DEF copy SAMPLE_P.DEF MSVCP60.DEF copy SAMPLD_P.DEF MSVCP60D.DEF copy Intel\_SAMPLE_.DEF Intel\RubyCRT.DEF copy Intel\_SAMPLD_.DEF Intel\RubyCRTD.DEF 3. 添付のパッチを適用して以下をエクスポートし、内部名を変更します。 Makefileの変更はディレクトリ名のスペースの対応です。 _alloc_osfhnd _free_osfhnd __pioinfo _set_osfhnd 4. 以下を実行します。バイナリは、build/intelの下に作成されます。 set V6TOOLS=C:\Program Files\Microsoft Visual Studio\VC98 make debug && make 5. あとは、Rubyを-MDスイッチ付で作り直します。 --- Intel/_SAMPLE_.DEF Wed Jun 17 00:00:00 1998 +++ Intel/RubyCRT.DEF Wed Feb 16 14:47:03 2000 @@ -3,6 +3,6 @@ ; This is the .DEF file for the Microsoft Visual C++ Run-Time Library DLL -; The release version is _SAMPLE_.DLL and the debug version _SAMPLD_.DLL. +; The release version is RubyCRT.DLL and the debug version RubyCRTD.DLL. ; ;************************************************************************ -LIBRARY _SAMPLE_ +LIBRARY RubyCRT EXPORTS @@ -15,2 +15,3 @@ EXPORTS acos + _alloc_osfhnd _amsg_exit @@ -125,2 +126,3 @@ EXPORTS free + _free_osfhnd freopen @@ -339,2 +341,3 @@ EXPORTS perror + __pioinfo DATA _pipe @@ -377,2 +380,3 @@ EXPORTS _setmode + _set_osfhnd _set_sbh_threshold --- Intel/_SAMPLD_.DEF Wed Jun 17 00:00:00 1998 +++ Intel/RubyCRTD.DEF Wed Feb 16 14:47:07 2000 @@ -3,6 +3,6 @@ ; This is the .DEF file for the Microsoft Visual C++ Run-Time Library DLL -; The release version is _SAMPLE_.DLL and the debug version _SAMPLD_.DLL. +; The release version is RubyCRT.DLL and the debug version RubyCRTD.DLL. ; ;************************************************************************ -LIBRARY _SAMPLD_ +LIBRARY RubyCRTD EXPORTS @@ -15,2 +15,3 @@ EXPORTS acos + _alloc_osfhnd _amsg_exit @@ -125,2 +126,3 @@ EXPORTS free + _free_osfhnd freopen @@ -339,2 +341,3 @@ EXPORTS perror + __pioinfo DATA _pipe @@ -377,2 +380,3 @@ EXPORTS _setmode + _set_osfhnd _set_sbh_threshold --- SAMPLE_I.DEF Wed Jun 17 00:00:00 1998 +++ MSVCIRT.DEF Wed Feb 16 20:45:02 2000 @@ -3,6 +3,6 @@ ; This is the .DEF file for the Microsoft Visual C++ Old Iostreams Run-Time Library DLL -; The release version is SAMPLE_I.DLL and the debug version SAMPLD_I.DLL. +; The release version is MSVCIRT.DLL and the debug version MSVCIRTD.DLL. ; ;************************************************************************ -LIBRARY SAMPLE_I +LIBRARY MSVCIRT EXPORTS --- SAMPLD_I.DEF Wed Jun 17 00:00:00 1998 +++ MSVCIRTD.DEF Wed Feb 16 20:44:52 2000 @@ -3,6 +3,6 @@ ; This is the .DEF file for the Microsoft Visual C++ Old Iostreams Run-Time Library DLL -; The release version is SAMPLE_I.DLL and the debug version SAMPLD_I.DLL. +; The release version is MSVCIRT.DLL and the debug version MSVCIRTD.DLL. ; ;************************************************************************ -LIBRARY SAMPLD_I +LIBRARY MSVCIRTD EXPORTS --- ext_mkf Wed Jun 17 00:00:00 1998 +++ Makefile Wed Feb 16 19:44:24 2000 @@ -18,14 +18,14 @@ # -RETAIL_DLL_NAME=_sample_ -RETAIL_LIB_NAME=_sample_ -RETAIL_DLLCPP_NAME=sample_p -RETAIL_LIBCPP_NAME=sample_p -RETAIL_DLLIOS_NAME=sample_i -RETAIL_LIBIOS_NAME=sample_i -DEBUG_DLL_NAME=_sampld_ -DEBUG_LIB_NAME=_sampld_ -DEBUG_DLLCPP_NAME=sampld_p -DEBUG_LIBCPP_NAME=sampld_p -DEBUG_DLLIOS_NAME=sampld_i -DEBUG_LIBIOS_NAME=sampld_i +RETAIL_DLL_NAME=RubyCRT +RETAIL_LIB_NAME=RubyCRT +RETAIL_DLLCPP_NAME=MSVCP60 +RETAIL_LIBCPP_NAME=MSVCP60 +RETAIL_DLLIOS_NAME=MSVCIRT +RETAIL_LIBIOS_NAME=MSVCIRT +DEBUG_DLL_NAME=RubyCRTD +DEBUG_LIB_NAME=RubyCRTD +DEBUG_DLLCPP_NAME=MSVCP60D +DEBUG_LIBCPP_NAME=MSVCP60D +DEBUG_DLLIOS_NAME=MSVCIRTD +DEBUG_LIBIOS_NAME=MSVCIRTD # @@ -330,3 +330,3 @@ RC_OPTS=-l 409 -r RC_DEFS=$(COMMON_DEFS) $(WINDOWS_H_DEFS) -RC_INCS=-I$(V6TOOLS)\include +RC_INCS="-I$(V6TOOLS)\include" PDBDIR_CPU = $(RELDIR_CPU) @@ -1727,3 +1727,3 @@ $(RELEASE_DLL) : $(RELDIR_CPU) $(RETAIL_ $(TCMAPLIB_DIR)\tcmap.lib $(TCMAPDLLLIB_DIR)\tcmapdll.lib \ - $(V6TOOLS)\include\winver.h \ + "$(V6TOOLS)\include\winver.h" \ $(OBJDIR_DLL)\link.rsp $(OBJDIR_DLL)\implib.rsp @@ -1769,3 +1769,3 @@ $(RELEASE_DLLCPP) : $(RELDIR_CPU) $(RETA $(DLLCPP_STATIC_OBJS) \ - $(V6TOOLS)\include\winver.h \ + "$(V6TOOLS)\include\winver.h" \ $(RELEASE_IMPLIB_DLL) \ @@ -1809,3 +1809,3 @@ $(RELEASE_DLLIOS) : $(RELDIR_CPU) $(RETA $(DEFFILE2_DIR)\$(RETAIL_DLLIOS_NAME).def $(IOSSRC_OBJS_DLL:*=dll) \ - $(V6TOOLS)\include\winver.h \ + "$(V6TOOLS)\include\winver.h" \ $(RELEASE_IMPLIB_DLL) $(OBJDIR_DLL)\ios_dll.obj \ @@ -1852,3 +1852,3 @@ $(RELEASE_DLL_DBG) : $(RELDIR_CPU) $(RET $(TCMAPLIB_DIR)\tcmap.lib $(TCMAPDLLLIB_DIR)\tcmapdll.lib \ - $(V6TOOLS)\include\winver.h \ + "$(V6TOOLS)\include\winver.h" \ $(OBJDIR_DLL_DBG)\link.rsp $(OBJDIR_DLL_DBG)\implib.rsp @@ -1897,3 +1897,3 @@ $(RELEASE_DLLCPP_DBG) : $(RELDIR_CPU) $( $(DLLCPP_STATIC_OBJS_DBG) \ - $(V6TOOLS)\include\winver.h \ + "$(V6TOOLS)\include\winver.h" \ $(RELEASE_IMPLIB_DLL_DBG) \ @@ -1940,3 +1940,3 @@ $(RELEASE_DLLIOS_DBG) : $(RELDIR_CPU_DBG $(DEFFILE2_DIR)\$(DEBUG_DLLIOS_NAME).def $(IOSSRC_OBJS_DLL:*=xdll) \ - $(V6TOOLS)\include\winver.h \ + "$(V6TOOLS)\include\winver.h" \ $(RELEASE_IMPLIB_DLL_DBG) $(OBJDIR_DLL_DBG)\ios_dll.obj \ -- 小松克行 / Katsuyuki Komatsu