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

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

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

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

C++

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

DXライブラリ

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

Q&A

解決済

2回答

3958閲覧

dxlib をgcc からコンパイルしたい。

退会済みユーザー

退会済みユーザー

総合スコア0

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

C++

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

DXライブラリ

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

0グッド

0クリップ

投稿2021/03/25 02:03

編集2021/03/26 02:37

提示画面ですがdxlibをgccを用いてコンパイルしようとするとエラーになっています。これはどうすればいいのでしょうか?参考サイト通りに落としてきたdxlibのデータを参考サイト通りに導入してコンパイルしたいのですがファイルがありませんというエラーが発生します
なぜこいったエラーが発生するのでしょか?ライブラリリンクを指定しているので通るはずなのですが?

イメージ説明
イメージ説明
参考サイト: https://www.toumasu-program.net/entry/2019/05/15/210838
参考サイト: https://dxlib.xsrv.jp/use/dxuse_gcc.html

cpp

1#include "DxLib.h" 2// プログラムは WinMain から始まります 3int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) 4{ 5if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 6{ 7return -1 ; // エラーが起きたら直ちに終了 8} 9DrawPixel( 320 , 240 , GetColor( 255,255,255 ) ) ; // 点を打つ 10WaitKey() ; // キー入力待ち 11DxLib_End() ; // DXライブラリ使用の終了処理 12return 0 ; // ソフトの終了 13}

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/03/25 02:48

そもそも何故gccを使いたいのですか?
yumetodo

2021/03/25 02:56

gccのコマンドに-vをつけた結果とDxLibのヘッダーをどこにおいたかを追記してください
m.ts10806

2021/03/25 09:45

>どうすればいいのでしょうか? 質問者さんのスタンスでは、もうどうにもなりません。本当に。
K_3578

2021/03/26 02:57

何も思考せずにただ回答者から聞いたことを実行しているだけだから一生経っても成長しないんですよ。 teratailは「思考するエンジニアの為のQ&Aコミュニティ」なので質問者のような 思考することを放棄したただのラジコンはどうしようもありません。 思考することを始めるか、違う分野に進まれることをおすすめします。
退会済みユーザー

退会済みユーザー

2021/03/26 04:58 編集

画像を見るにVisualStudio入ってるっぽいですが、既にVisualStudioでビルドできてるんですよね?わざわざデバッグしやすいVisualStudioを使用せずにgccを使うかが謎です。まあ、過去の質問からして、他人にデバッグ丸投げで自分でデバッグをまともにしてないですが。
退会済みユーザー

退会済みユーザー

2021/03/26 07:48

gccを使ってみたいので投稿しました。
K_3578

2021/03/26 07:54

>gccを使ってみたいので投稿しました。 そういう物は自分でまともにデバッグが出来るようになってから使いましょう。
yumetodo

2021/03/27 06:42

-vつけてというのは他のオプションそのままでという意味合いだったのですが・・・まあいいや。そうすることでどのinclude pathを見に行ったか表示してくれるのですよ。
guest

回答2

0

ベストアンサー

www.toumasu-program.netを参考にされてg++のコマンドを実行したところだと思います。
>上記のコードを完成させたら、以下の様にコンパイルします。

g++ -m32 -o test test.cpp -LC:\MinGW\lib\DxLib -DDX_GCC_COMPILE -DDX_NON_INLINE_ASM -lDxLib \ -lDxUseCLib \ -lDxDrawFunc \ -ljpeg \ -lpng \ : :

これは複数のコマンドではなく、下記のような非常に長い1つのコマンドです。

g++ -m32 -o test test.cpp -LC:\MinGW\lib\DxLib -DDX_GCC_COMPILE -DDX_NON_INLINE_ASM -DxLib -lDxUseCLib -lDxDrawFunc -ljpeg -lpng … …

サイトの方おそらくmakefileの書式で提示されたのだと思います(makefileは行の最後に¥(円記号)を付けると、行を次行に継続させることができます)

改行をすべて削除して1行に連結してコマンドを実行してみてください。

投稿2021/03/25 10:43

Serbonis

総合スコア581

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

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

Serbonis

2021/03/25 10:52

すいません、int32_t さんにて回答済みの同じ事柄の指摘でした。
退会済みユーザー

退会済みユーザー

2021/03/25 13:23

質問ですが実行しましたが[ test.cpp:1:10: fatal error: DxLib\DxLib.h: No such file or directory #include "DxLib\DxLib.h" ^~~~~~~~~~~~~~~ compilation terminated. ]というエラーが出るのですがどうすればいいのでしょうか?
Serbonis

2021/03/25 13:40

C:¥MinGW¥includeにDxLibというフォルダを作成して、そこにDxLib.hを置けばよいと思います。
退会済みユーザー

退会済みユーザー

2021/03/25 13:56

パス: C:\Program Files (x86)\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\include\DxLib 部にしっかりとDxLib.hがおいてあるのですがなぜでしょうか?
int32_t

2021/03/25 14:18 編集

www.toumasu-program.net の手順2に従っていたら C:\MinGW\include\DxLib\DxLib.h が存在するはずです。MinGWのインストールディレクトリが C:\MinGW ではないのですか?
退会済みユーザー

退会済みユーザー

2021/03/25 14:27 編集

違うみたいです。ファイル名をパスを変えてみます。 g++ -m32 -o test test.cpp -LC:\Program Files (x86)\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\include -DDX_GCC_COMPILE -DDX_NON_INLINE_ASM -DxLib -lDxUseCLib -lDxDrawFunc -ljpeg -lpng … … としてみましたがコンパイルできません。
Serbonis

2021/03/25 21:32

対処としては2通りあります。 ①MinGWを再インストールする。 インストール先を指定するステップがあると思いますので、C:¥MinGWを指定する。 ②g++のオプションでインクルードパス(-I)を指定する。 -IC:\Program Files (x86)\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\include 先々の事を勘案すると①をお勧めします。
退会済みユーザー

退会済みユーザー

2021/03/26 02:47 編集

はい。MinGWを再インストールしました。 そしてコマンドを実行すると"未定義の外部参照"というエラー出るのですがこれはどうすればいいのでしょうか? 「 g++ -m32 -o test test.cpp -LC:\MinGW\lib\DxLib -DDX_GCC_COMPILE -DDX_NON_INLINE_ASM -DxLib -lDxUseCLib -lDxDrawFunc -ljpeg -lpng c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\yw325\AppData\Local\Temp\ccQH1o7B.o:test.cpp:(.text+0x7): undefined reference to `DxLib::DxLib_Init()' c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\yw325\AppData\Local\Temp\ccQH1o7B.o:test.cpp:(.text+0x34): undefined reference to `DxLib::GetColor(int, int, int)' c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\yw325\AppData\Local\Temp\ccQH1o7B.o:test.cpp:(.text+0x4c): undefined reference to `DxLib::DrawPixel(int, int, unsigned int)' c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\yw325\AppData\Local\Temp\ccQH1o7B.o:test.cpp:(.text+0x51): undefined reference to `DxLib::WaitKey()' c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\yw325\AppData\Local\Temp\ccQH1o7B.o:test.cpp:(.text+0x56): undefined reference to `DxLib::DxLib_End()' collect2.exe: error: ld returned 1 exit status 」
dodox86

2021/03/26 02:44

> そしてコマンドを実行するとこういったエラーが出るですがどうすればいいのでしょうか?  あなたがこれまで数百としてきた質問に対していただいた回答の中に、必ずそのヒントと答えがあります。探してください。
Serbonis

2021/03/26 03:27

-DxLib このオプションの指定が間違いだと思います(-lDxLib)。g++には-Dから始まるオプションもあるので、コマンドがエラーにならなかったものと思います。
退会済みユーザー

退会済みユーザー

2021/03/26 03:41 編集

-lDxLibにましたが依然としてコンパイルエラーにますコンパイルエラーということはプログラムが間違えているのでしょうか?インクルードエラーとは表示されないといこうとはパスは通っているということでしょうか?オプションが悪いのでしょうか?
Serbonis

2021/03/26 08:36 編集

オプションに-cを追加して成功するか試して見てください。 g++ -m32 -c -o test test.cpp … … …
退会済みユーザー

退会済みユーザー

2021/03/26 08:35

オブジェクトファイルを作成するオプションのようですが 「 アセンブラメッセージ: 致命的なエラー:テストを作成できません:アクセスが拒否されました 」 と表示されます。
Serbonis

2021/03/26 08:40

それはコンパイルの問題ではなく、おそらくはPCの環境によるものと思います。
Serbonis

2021/03/26 08:59

書き方が悪かったようです。他のオプションはそのままで -c を追加してください(-DDX_NON_INLINE_ASMが外されたのが原因かと思います)
退会済みユーザー

退会済みユーザー

2021/03/26 09:40

g++ -m32 -c -o test test.cpp -LC:\MinGW\lib\DxLib -DDX_GCC_COMPILE -DDX_NON_INLINE_ASM -DxLib -lDxUseCLib -lDxDrawFunc -ljpeg -lpng  というコマンドを入力しましたが同じエラーが発生します。ソースファイルには問題がようです。
Serbonis

2021/03/26 10:04

残念ながらわたしでは現状でわかる範囲では解決方法がわかりません。お手伝いできるのはここまでのようです。PCを再起動してみるのもいいかもしれません。
guest

0

打ったコマンドから察すると www.toumasu-program.net のページを参照しているとおもいますが、そのページと #include の行が異なってます。ページの指示通りの手順を踏んでいたら、"DxLib.h" ではなく "DxLib\DxLib.h" です。

あと、コマンドプロンプトでそのコマンドを実行する場合、\^ に置き換える必要があります。
(たぶんページ著者ばコマンドプロンプトではなく msys bash でも使っているんでしょう)

投稿2021/03/25 02:28

int32_t

総合スコア20882

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

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

退会済みユーザー

退会済みユーザー

2021/03/25 04:51 編集

はい。ヘッダー部の変更しました。 またすべての¥を^に変更しましたが無効な引数というエラー出ます。
int32_t

2021/03/25 04:55

"No such file or directory" は出なくなりましたか? 「^」と改行をすべて消して一行でコマンドを書くとどうですか?
退会済みユーザー

退会済みユーザー

2021/03/25 05:05

はい、引数が無効です。またはインクルードファイルがありませんとうのエラーが多発します。いろいろ試しましたが無理でした。
int32_t

2021/03/25 05:07 編集

エラーを正確にテキストで質問文に追記してください
int32_t

2021/03/25 05:09

参考ページにあるようにdxlibヘッダのコピーはしたのですよね?
退会済みユーザー

退会済みユーザー

2021/03/26 02:47

はい、しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問