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

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

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

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

MinGW

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

DXライブラリ

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

Sublime Text

SublimeTextとは、オーストラリアのSublime HQ Pty Ltdが提供しているテキストエディターのことです。Mac/Windows/Linuxでの利用が可能で、柔軟にカスタマイズできたり、多くの言語に対応していくこともあり、海外や日本国内でも人気のあるエディターです。

Q&A

1回答

6382閲覧

MinGWでDXライブラリを使用し、.exeファイルを出力させたい

退会済みユーザー

退会済みユーザー

総合スコア0

C++

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

MinGW

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

DXライブラリ

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

Sublime Text

SublimeTextとは、オーストラリアのSublime HQ Pty Ltdが提供しているテキストエディターのことです。Mac/Windows/Linuxでの利用が可能で、柔軟にカスタマイズできたり、多くの言語に対応していくこともあり、海外や日本国内でも人気のあるエディターです。

0グッド

0クリップ

投稿2017/01/23 08:57

編集2017/01/23 09:16

###前提・実現したいこと
現在、C++を勉強しているものです。コンパイラにはMinGWのg++を使用しています。

こちらのサイト(http://dixq.net/g/01_02.html)を参考にしながら、DXライブラリの活用を始めようかと思い、以下のソースコードを作成しました。実行してみたところ、ソースコード自体にエラーは見られなかったのですが、.exeファイルが出力されません。

DXライブラリ置き場からMinGW用、自己解凍形式のものをダウンロードし、.hファイルや.aファイル等もMinGWのincludeフォルダにすべてコピーしました。どのようにすればMinGWでDXライブラリを使用してプログラムが作成できるでしょうか。

###発生している問題・エラーメッセージ

MinGWでDXライブラリを用いた.exeファイルが出力できない。

###該当のソースコード

C++

1#define DDX_GCC_COMPILE 2#define DDX_NON_INLINE_ASM 3 4#include <cstdio> 5#include <iostream> 6#include <cstring> 7#include <DxLib.h> 8 9using namespace std; 10 11int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){ 12 DxLib_Init(); // DXライブラリ初期化処理 13 14 15 WaitKey(); // キー入力待ち 16 DxLib_End(); // DXライブラリ終了処理 17 return 0; 18}

###補足情報(言語/FW/ツール等のバージョンなど)
テキストエディタにはSublime Text、コンパイラは上記のとおりMinGWを使用しています。

.aファイルは
C:\MinGW\lib\gcc\mingw32\5.3.0

.hファイルは
C:\MinGW\lib\gcc\mingw32\5.3.0\include

にコピーしました。

###補足

出力した際、以下のようなログ?が出ました。

C:\Users\IA1B0~1.CHI\AppData\Local\Temp\ccto821W.o:dxpractice1.cpp:(.text+0x7): undefined reference to `DxLib::DxLib_Init()' C:\Users\IA1B0~1.CHI\AppData\Local\Temp\ccto821W.o:dxpractice1.cpp:(.text+0xc): undefined reference to `DxLib::WaitKey()' C:\Users\IA1B0~1.CHI\AppData\Local\Temp\ccto821W.o:dxpractice1.cpp:(.text+0x11): undefined reference to `DxLib::DxLib_End()' collect2.exe: error: ld returned 1 exit status [Finished in 4.6s with exit code 1] [shell_cmd: g++ "C:\Users\\Documents\Sublime Text\DxLib_Practice\dxpractice1.cpp" -o "C:\Users\\Documents\Sublime Text\DxLib_Practice/dxpractice1" && "C:\Users\\Documents\Sublime Text\DxLib_Practice/dxpractice1"] [dir: C:\Users\\Documents\Sublime Text\DxLib_Practice] [path: C:\MinGW\bin;C:\MinGW\msys\1.0\bin;C:\MinGW\bin;C:\MinGW\msys\1.0\bin]

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

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

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

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

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

guest

回答1

0

こんにちは。

エラー・メッセージの記載がないので確実ではありませんが、恐らくDXライブラリとリンクできていないのではないでしょうか?(ldがundefined symbolエラーを出している。)

もし、そうであれば、Gnu C++ ( MinGW )によるDXライブラリの使い方の手順を厳密に実施する必要が有ります。

更に、リンカ・オプションに-L(ライブラリ・パスの指定)が必要だろうと思います。
リンク時に必要なオプションとして、-L <DXLIBの.aファイルを保存しているフォルダのパス>を追加します。

投稿2017/01/23 09:12

Chironian

総合スコア23272

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

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

退会済みユーザー

退会済みユーザー

2017/01/23 09:17

ありがとうございます。補足としてSublimeTextのコンソールに表示された内容を記載しました。やはり、リンクができていないのでしょうか?
Chironian

2017/01/23 09:24

正にその通りです。リンクに失敗してます。 "error: ld returned 1 exit status" ldが1を返却してますね。つまりldがエラーを返してます。ldはリンカです。 回答にはundefined symbolと書きましたが、正しくはundefined referenceでした。
退会済みユーザー

退会済みユーザー

2017/01/23 09:47

やはりそういうことなのですね・・・とすると、 Gnu C++(MinGW)によるDXライブラリの使い方 の 4.リンク時に必要なオプション の部分をしっかりやる必要がある、ということでしょうか。
Chironian

2017/01/23 09:54

面倒ですが、そういうことになります。 ライブラリの開発元の指示には従っておいた方が無用なトラブルに巻き込まれにくいです。
退会済みユーザー

退会済みユーザー

2017/01/23 09:57

とすると、オプションの追加、というのはどのようにすればいいのでしょうか。お手数ですが、やり方やそれについて詳しいサイト等がありましたら教えていただきたいです。
退会済みユーザー

退会済みユーザー

2017/01/23 12:15

ありがとうございます。ちなみにこのコマンドは、どこから打ち込めばよいのでしょうか・・・? たくさん聞いてしまい申し訳ありません・・・
Chironian

2017/01/23 12:33

> どこから打ち込めばよいのでしょうか・・・? コマンド・プロンプトです。MinGWにパスを通していれば使えます。
退会済みユーザー

退会済みユーザー

2017/01/23 12:37

わかりました、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問