Create  Edit  Diff  FrontPage  Index  Search  Changes  Login

IconvForWoe32

libiconv-1.11.1

libiconvの最新版(1.11.1)はそのままの状態ではVC++6ではコンパイルエラーとなる。

以下でビルド後のバイナリおよびビルドに必要な手順を示す。

Visual C++ 6でビルドしたlibiconv 1.11.1

http://arton.no-ip.info/data/libiconv-1.11.1-bin.zip

  • DLLに埋め込まれたバージョン番号が1.11.0.0となっているのは元のリソースがそうなっているからで、利用したソースアーカイブ自体は1.11.1を利用している。

ビルドのために必要な修正

MSVC用config.hにEXEEXTを設定する。EXEEXTはsrclib(missing)のビルド時に参照されるが、トップレベルでのnmaakeへの引数はsrclibのビルド時には伝播されないため、直接定義する。

diff -u config.h.msvc.org config.h.msvc
--- config.h.msvc.org	Thu Jul 20 04:10:22 2006
+++ config.h.msvc	Sun Dec 31 12:57:36 2006
@@ -715,3 +715,4 @@
 # define DLL_VARIABLE
 #endif

+#define EXEEXT "exe"

srclibの修正

cd srclib

width.cをコンパイル対象に追加

diff -u Makefile.msvc.org Makefile.msvc
--- Makefile.msvc.org	Sat Jan 24 18:11:24 2004
+++ Makefile.msvc	Sun Dec 31 03:26:20 2006
@@ -90,7 +90,8 @@
   xmalloc.obj xstrdup.obj \
   \
   relocatable.obj \
-  setenv.obj unsetenv.obj
+  setenv.obj unsetenv.obj \
+  width.obj

 all : icrt.lib

@@ -120,6 +121,9 @@

 unsetenv.obj : unsetenv.c
	 $(CC) $(INCLUDES) $(CFLAGS) -c unsetenv.c
+
+width.obj : width.c
+	$(CC) $(INCLUDES) $(CFLAGS) -c width.c

 icrt.lib : $(OBJECTS)
 	-$(RM) icrt.lib

stdint.hが存在しないので、unitypes.hを修正して直接定義する。

diff -u unitypes.h.org unitypes.h
--- unitypes.h.org	Fri May 20 01:58:24 2005
+++ unitypes.h	Sun Dec 31 03:10:10 2006
@@ -20,7 +20,10 @@
 #define _UNITYPES_H

 /* Get uint8_t, uint16_t, uint32_t.  */
-#include <stdint.h>
+/* #include <stdint.h> */
+typedef unsigned char uint8_t;
+typedef unsigned short uint16_t;
+typedef unsigned int uint32_t;

 /* Type representing a Unicode character.  */
 typedef uint32_t ucs4_t;

unsetenv.cがunistd.hをincludeしないように修正する。

diff -u unsetenv.c.org unsetenv.c
--- unsetenv.c.org	Sun Jun 18 00:51:52 2006
+++ unsetenv.c	Sun Dec 31 03:03:49 2006
@@ -27,7 +27,9 @@

 #include <stdlib.h>
 #include <string.h>
+#if HAVE_UNISTD_H
 #include <unistd.h>
+#endif

 #if !_LIBC
 # define __environ	environ

上記修正後、トップレベルディレクトリに戻り、nmakeを実行する。コマンドラインで指定が次第な定義はNO_NLS。以下ではDLLを生成するための指定を示す。

nmake -f Makefile.msvc DLL=1 MFLAGS=-MD NO_NLS=1

以上

Last modified:2007/01/02 12:24:09
Keyword(s):
References: