diff -r 4e16f44f91df -r 7af800edb1d4 compile/Make_mingw.mak --- a/compile/Make_mingw.mak +++ b/compile/Make_mingw.mak @@ -12,9 +12,12 @@ libmigemo_LIB = $(outdir)libmigemo.dll.a libmigemo_DSO = $(outdir)$(DLLNAME) EXEEXT = .exe -CFLAGS_MIGEMO = +CFLAGS_MIGEMO = -D_MIGEMO_EXPORTS LDFLAGS_MIGEMO = CC = gcc +DLLTOOL = dlltool +DLLWRAP = dllwrap +DLLFLAGS_MIGEMO = -k include config.mk include compile/unix.mak @@ -24,10 +27,18 @@ ############################################################################## # 環境に応じてライブラリ構築法を変更する -# + $(libmigemo_LIB): $(libmigemo_DSO) -$(libmigemo_DSO): $(libmigemo_OBJ) $(srcdir)migemo.def - dllwrap -o $(libmigemo_DSO) --dllname $(DLLNAME) --implib $(libmigemo_LIB) --def $(srcdir)migemo.def $(libmigemo_OBJ) + # <@n>付きDEFを使い、-k(--kill-at)を付けてlib*.a出力 + $(DLLTOOL) -D $< -d $(outdir)migemo.def -l $@ $(DLLFLAGS_MIGEMO) + +$(libmigemo_DSO): $(libmigemo_OBJ) + # DEF出力。一緒に-k(--kill-at)を指定するとDEFファイルの<@n>も消える + $(DLLWRAP) -o $@ $^ --dllname $(DLLNAME) --output-def $(outdir)migemo.def + # 関数名に<@n>が付いてるので一度削除 + $(RM) $@ + # DLL出力。-k(--kill-at)を付けて<@n>を削除 + $(DLLWRAP) -o $@ $^ $(DLLFLAGS_MIGEMO) install-lib: $(libmigemo_DSO) $(libmigemo_LIB) $(INSTALL_DATA) $(libmigemo_LIB) $(libdir) diff -r 4e16f44f91df -r 7af800edb1d4 src/migemo.h --- a/src/migemo.h +++ b/src/migemo.h @@ -8,12 +8,22 @@ #ifndef MIGEMO_H #define MIGEMO_H -#if defined(_WIN32) && !defined(__MINGW32__) && !defined(__CYGWIN32__) +#if defined(_WIN32) && !defined(__CYGWIN32__) # define MIGEMO_CALLTYPE __stdcall #else # define MIGEMO_CALLTYPE #endif +#if defined(_WIN32) && defined(__MINGW32__) +# ifdef _MIGEMO_EXPORTS +# define MIGEMO_DECLSPEC __declspec(dllexport) +# else +# define MIGEMO_DECLSPEC __declspec(dllimport) +# endif +#else +# define MIGEMO_DECLSPEC +#endif + #define MIGEMO_VERSION "1.3" /* for migemo_load() */ @@ -45,25 +55,25 @@ extern "C" { #endif -migemo* MIGEMO_CALLTYPE migemo_open(const char* dict); -void MIGEMO_CALLTYPE migemo_close(migemo* object); -unsigned char* MIGEMO_CALLTYPE migemo_query(migemo* object, +MIGEMO_DECLSPEC migemo* MIGEMO_CALLTYPE migemo_open(const char* dict); +MIGEMO_DECLSPEC void MIGEMO_CALLTYPE migemo_close(migemo* object); +MIGEMO_DECLSPEC unsigned char* MIGEMO_CALLTYPE migemo_query(migemo* object, const unsigned char* query); -void MIGEMO_CALLTYPE migemo_release(migemo* object, +MIGEMO_DECLSPEC void MIGEMO_CALLTYPE migemo_release(migemo* object, unsigned char* string); -int MIGEMO_CALLTYPE migemo_set_operator(migemo* object, int index, +MIGEMO_DECLSPEC int MIGEMO_CALLTYPE migemo_set_operator(migemo* object, int index, const unsigned char* op); -const unsigned char* MIGEMO_CALLTYPE migemo_get_operator(migemo* object, +MIGEMO_DECLSPEC const unsigned char* MIGEMO_CALLTYPE migemo_get_operator(migemo* object, int index); -void MIGEMO_CALLTYPE migemo_setproc_char2int(migemo* object, +MIGEMO_DECLSPEC void MIGEMO_CALLTYPE migemo_setproc_char2int(migemo* object, MIGEMO_PROC_CHAR2INT proc); -void MIGEMO_CALLTYPE migemo_setproc_int2char(migemo* object, +MIGEMO_DECLSPEC void MIGEMO_CALLTYPE migemo_setproc_int2char(migemo* object, MIGEMO_PROC_INT2CHAR proc); -int MIGEMO_CALLTYPE migemo_load(migemo* obj, int dict_id, +MIGEMO_DECLSPEC int MIGEMO_CALLTYPE migemo_load(migemo* obj, int dict_id, const char* dict_file); -int MIGEMO_CALLTYPE migemo_is_enable(migemo* obj); +MIGEMO_DECLSPEC int MIGEMO_CALLTYPE migemo_is_enable(migemo* obj); #ifdef __cplusplus }