MinGWで吉里吉里プラグインを開発する場合、makefileは大体次のような内容になる。
なお、Visual C++での吉里吉里プラグイン開発に関しては、色々な墓場が良くまとまっている。
TARGET = xp3enc.dll SRCS = xp3enc.cpp LIBS = -static-libgcc
DEF = $(TARGET:.dll=.def) OBJS = $(SRCS:.cpp=.o)
CXXFLAGS = -O2 LDFLAGS = -shared -Wl,$(DEF) -Wl,--enable-stdcall-fixup -Wl,--add-stdcall-alias $(LIBS)
all: $(TARGET)
$(TARGET): $(OBJS) $(CXX) $(LDFLAGS) $(OUTPUT_OPTION) $(OBJS)
.PHONY: clean clean: -rm *.o *.dll
- DLLをビルドする場合は-sharedオプションを使う
- -Wl,--add-stdcall-aliasオプションでサフィックス(@nn)なしシンボルにする
- -Wl,--kill-atオプションでも可
- -Wl,--add-stdcall-aliasオプションでサフィックス(@nn)なしシンボルにする
- ソースファイルの文字コードを指定する場合は-finput-charsetオプションを使う(…となっているが、-~-charsetオプションはMinGWのバージョンによっては機能したりしなかったりする)
- --enable-stdcall-fixupオプションを指定する(曖昧リンクしない)のが望ましい
- Dependency WalkerでMinGWのDLLに依存していないか確認すること。リンクしていたらスタティックリンクに変更すること
- 出来たDLLはmsvcrt.dllに依存する。Windows 98以降ではOSに標準添付されているので、Windows XP以降に対応させるなら特に気にしなくて良いはず(←未確認)
- 暗号化プラグインの場合は、吉里吉里リリーサー(krkrrel.exe)でリリースする時、[オプション-xp3enc.dllを使う]のチェックを忘れないこと(良く忘れる)