DirectXをG++でビルドしたいのですが、DirectXを初期化しようと「D3D11CreateDevice」を呼び出すと、エラーになります。
VisualStudioでビルドすると、問題ないのですが、G++でビルドしようとすると、「undefined reference to `D3D11CreateDevice'」というエラーが発生してしまします。
G++でのビルドは不慣れなため、解決する自信があまり無いのですが、もし解決方法等にあてがあればご教示ください。
VisualStudioで「D3D11CreateDevice」のメソッドは、「C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\d3d11.h」を参照しているようです。
ただ、設定ファイルを見てもどうやって、それを参照しているかは不明です。
■エラーメッセージ
> make g++ -shared -O2 -o bin/XxLib.dll obj/XxLib.o obj/SystemClass.o obj/DirectXManager.o -mwindows obj/DirectXManager.o:DirectXManager.cpp:(.text+0x315): undefined reference to `D3D11CreateDevice' collect2.exe: error: ld returned 1 exit status make: *** [XxLib.dll] エラー 1
■エラーが発生している行(cppファイル)。DirectXの初期化処理。
D3D11CreateDevice(nullptr, D3D_DRIVER_TYPE_HARDWARE, nullptr, flags, nullptr, 0, D3D11_SDK_VERSION, &d3d11Device, nullptr, &m_d3d11DeviceContext);
■ビルドに使用しているMakefile
################################################## # 単一パラメータ OBJDIR = obj SRCDIR = src BINDIR = bin PROGRAM = XxLib.dll ################################################## # 複合パラメータ OBJS = $(OBJDIR)/XxLib.o $(OBJDIR)/SystemClass.o $(OBJDIR)/DirectXManager.o CFLAGS = -shared -O2 # -shared : DLL形式のライブラリ作成時に必要なコンパイルオプション # -O2 : コンパイラはサイズとコンパイル時間に妥協せずにコードのパフォーマンスを改善しようと試みる LDFLAGS=-mwindows ################################################## # make $(PROGRAM): $(OBJS) g++ $(CFLAGS) -o $(BINDIR)/$(PROGRAM) $(OBJS) $(LDFLAGS) $(OBJDIR)/%.o: $(SRCDIR)/%.c gcc $(CFLAGS) -o $@ -c $< $(OBJDIR)/%.o: $(SRCDIR)/%.cpp g++ $(CFLAGS) -o $@ -c $< ################################################## # make clean clean: del $(BINDIR)$(PROGRAM) del $(OBJDIR)*.o
■試してダメだったこと
Makefileに以下を追加してみたりしましたが、エラーは解消されませんでした。
-I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um"
■追記(環境)
OS:Windows11
コンパイラ:MinGW(64bit版)
回答2件
あなたの回答
tips
プレビュー