質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

MinGW

MinGW(ミン・ジー・ダブリュー)は GNUツールチェーンのWindows移植版です。 ランタイムライブラリと開発ツールで構成されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

Q&A

解決済

2回答

1358閲覧

DXライブラリをMinGWでコンパイルしたときのエラーについて。

Watasuke102

総合スコア12

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

MinGW

MinGW(ミン・ジー・ダブリュー)は GNUツールチェーンのWindows移植版です。 ランタイムライブラリと開発ツールで構成されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

0グッド

1クリップ

投稿2018/04/15 11:50

編集2018/04/15 11:55

前提・実現したいこと

MinGW(6.3.0)でDXライブラリのソースコードをmakeしようとすると以下のエラーが出ます。
ソースコードとmakefileはE:\DXにあり、E:\DX\dxlibにインクルードするべきファイルがあります(DxLib.hやlibpng.aなど)。
エラーを消すためにはどうすればいいのでしょうか?

発生しているエラーメッセージ

main.o:main.cpp:(.text+0x7): undefined reference to DxLib::DxLib_Init()' main.o:main.cpp:(.text+0x34): undefined reference to DxLib::GetColor(int, int, int)'
main.o:main.cpp:(.text+0x4c): undefined reference to DxLib::DrawPixel(int, int, unsigned int)' main.o:main.cpp:(.text+0x51): undefined reference to DxLib::WaitKey()'
main.o:main.cpp:(.text+0x56): undefined reference to `DxLib::DxLib_End()'

該当のソースコード

おそらくC++のソースコードです。文字コードはShiftJISです。

C++

1#include "dxlib/DxLib.h" 2 3int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) 4{ 5 if( DxLib_Init() == -1 ){ 6 return -1 ; 7 } 8 9 DrawPixel( 320 , 240 , GetColor( 255,255,255 ) ) ; 10 11 WaitKey() ; 12 DxLib_End() ; 13 return 0 ; 14}

###Makefile

makefile

1INCLUDEDIR=E:/DX/dxlib 2 3LIBS1=-lDxLib -lDxUseCLib -lDxDrawFunc 4 5LIBS2=-ljpeg -lpng -lzlib -ltiff -ltheora_static -lvorbis_static -lvorbisfile_static -logg_static -lbulletdynamics -lbulletcollision -lbulletmath -lopusfile -lopus -lsilk_common -lcelt 6 7LINKDIR= -L dxlib 8 9CC=g++ 10CFLAGS= 11CPPFLAGS= -I $(INCLUDEDIR) -DDX_GCC_COMPILE -DDX_NON_INLINE_ASM 12LDFLAGS=-mwindows $(LINKDIR) $(LIBS1) $(LIBS2) 13 14main:main.o

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

MSYS2にて
6_3_0_i586フォルダをdxlibフォルダにして
mingw32から
g++ main.cpp -Ldxlib -lDxLib -lDxUseCLib -lDxDrawFunc -ljpeg -lpng -lzlib -ltiff -ltheora_static -lvorbis_static -lvorbisfile_static -logg_static -lbulletdynamics -lbulletcollision -lbulletmath -lopusfile -lopus -lsilk_common -lcelt -mwindows
でコンパイル及び実行できました。

文字コードはShiftJISです。

gccはutf-8が基本だった筈…asciiのみならutf-8と変わらないけど

g++ -vの結果を貼っておくと

text

1Using built-in specs. 2COLLECT_GCC=C:\msys64\mingw32\bin\g++.exe 3COLLECT_LTO_WRAPPER=C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.3.0/lto-wrapper.exe 4Target: i686-w64-mingw32 5Configured with: ../gcc-7.3.0/configure --prefix=/mingw32 --with-local-prefix=/mingw32/local --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 --with-native-system-header-dir=/mingw32/i686-w64-mingw32/include --libexecdir=/mingw32/lib --enable-bootstrap --with-arch=i686 --with-tune=generic --enable-languages=c,lto,c++,objc,obj-c++,fortran,ada --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-time=yes --enable-libstdcxx-filesystem-ts=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib --enable-checking=release --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-libiconv --with-system-zlib --with-gmp=/mingw32 --with-mpfr=/mingw32 --with-mpc=/mingw32 --with-isl=/mingw32 --with-pkgversion='Rev1, Built by MSYS2 project' --with-bugurl=https://sourceforge.net/projects/msys2 --with-gnu-as --with-gnu-ld --disable-sjlj-exceptions --with-dwarf2 6Thread model: posix 7gcc version 7.3.0 (Rev1, Built by MSYS2 project)

投稿2018/04/15 21:58

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Watasuke102

2018/04/15 22:16

a.exeが生成されました!ありがとうございます! --------------------------- a.exe - エントリ ポイントが見つかりません --------------------------- プロシージャ エントリ ポイント _ZdlPvj がダイナミック リンク ライブラリ E:\DX\a.exe から見つかりませんでした。 と出てしまいます...
asm

2018/04/15 22:29

んじゃ、最後に -static を追加
Watasuke102

2018/04/16 09:35

できましたーー!本当にありがとうございます!
guest

0

なぜ、わざわざMinGWでコンパイルしているのでしょう?
Visual Studio 2017 Communityなりでコンパイルすることをお勧めします。
LibパスはDirectXライブラリ他も必要だったはずです。

コンパイルに関する追記
提供元サイトにMinGW対応って書いてないと思います。

投稿2018/04/15 13:20

編集2018/04/15 14:24
YomogiKOBO

総合スコア187

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yumetodo

2018/04/15 14:02

>提供元サイトにMinGW対応って書いてないと思います。 対応しています
Watasuke102

2018/04/15 20:52

回答有り難うございます。 いつもはVisualStudioなのですが、学校の部活で使いたいので、インストール不要なMinGWを使いたいんです。
YomogiKOBO

2018/04/16 03:49

asmさんの回答よりヒントを得てmakefileを再構築してみました。参考までに。 ## ## Config ## #Compiler CC=g++ CFLAGS= CEXFLAG=-DDX_GCC_COMPILE -DDX_NON_INLINE_ASM #include path INCLUDEDIR=C:/Mingw/DX/dxlib #Library path LINKDIR= -L C:/Mingw/dx/dxlib LIBPATH=C:/Mingw/dx/dxlib/ #DX Library DXLIBS=-lDxLib -lDxUseCLib -lDxDrawFunc -ljpeg -lpng -lzlib -ltiff -ltheora_static -lvorbis_static -lvorbisfile_static -logg_static -lbulletdynamics -lbulletcollision -lbulletmath -lopusfile -lopus -lsilk_common -lcelt # LDFLAGS=$(DXLIBS) # object_files= \ main.o # PRODUCT=main # $(PRODUCT) : $(object_files) $(CC) -o $(PRODUCT).exe $(object_files) $(LINKDIR) $(LDFLAGS) -mwindows # .cpp.o: $(CC) -v -c -I $(INCLUDEDIR) $< # all : clean $(PRODUCT) clean: rm -rf $(object_files)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問