これまで通りプロジェクトを作成。 Makefile とソースを雛形のものと入れ替える。 これでとりあえず問題なさそうである。
その次に Windows 用に Makefile を変更してビルドした。
DEBUG=1 #PTR32=1 OBJS = testw.o resfilew.o LIBS = # リンカーオプション LDFLAGS = -mwindows TARGET = testw.exe CXXFLAGS = -Wall -fmessage-length=0 #CXXFLAGS += -UNICODE ifeq ($(DEBUG),1) CXXFLAGS += -O0 -g -D_DEBUG LDFLAGS += -Wl,--subsystem,console else CXXFLAGS += -Os endif ifeq ($(PTR32),1) CXXFLAGS += -D__PTR32 endif #出力を Shift_JIS にする #CXXFLAGS += -fexec-charset=CP932 $(TARGET): $(OBJS) $(CXX) -o $(TARGET) $(OBJS) $(LDFLAGS) $(LIBS) all: $(TARGET) resfilew.o: testw.rc windres -c 65001 -o resfilew.o testw.rc clean: del *.o del *.exe |
主な変更点はリンカーオプションである。
後、windres によりリソーススクリプトをリソースに変換している。
ソースの頭に #define UNICODE を置く
(コンパイルオプションで -DUNCODE でもよい)。
これで UTF-16 用の API が呼ばれるようになる。
次に UTF8 の文字列をUTF16 の文字列に変換してからAPIに渡す。
testw.cpp
// sample01.cpp #define UNICODE #include |
testw.rc (リソーススクリプト)
#include |