Re: gcc でのDxライブラリの環境構築について ( No.1 ) |
- 名前:管理人 日時:2021/08/13 00:51
手元では 8.1.0 でサンプルをビルドする時は以下のようなコマンドでコンパイル・リンクしています
<最初に Sample.cpp をコンパイルして Sample.o を作成します>
g++.exe -c -g -O0 Sample.cpp -o Sample.o -DDX_GCC_COMPILE -DDX_GCC_COMPILE_4_9_2 -DDX_NON_INLINE_ASM --input-charset=cp932 --exec-charset=cp932 -I"D:\MinGW_8_1_0_i686_w64_posix_dwarf_rt_v6_rev0\mingw32\lib\gcc\i686-w64-mingw32\8.1.0\include" -I"D:\MinGW_8_1_0_i686_w64_posix_dwarf_rt_v6_rev0\mingw32\lib\gcc\i686-w64-mingw32\8.1.0" -I"D:\MinGW_8_1_0_i686_w64_posix_dwarf_rt_v6_rev0\mingw32\include" -I"D:\MinGW_8_1_0_i686_w64_posix_dwarf_rt_v6_rev0\mingw32\i686-w64-mingw32\include" -I"D:\MinGW_8_1_0_i686_w64_posix_dwarf_rt_v6_rev0\include" -I"D:\DxLib_GCC\プロジェクトに追加すべきファイル_GCC(MinGW)用\8_1_0_i686_w64_posix_dwarf_rt_v6_rev0"
<次に Sample.o とDXライブラリなどその他ライブラリをリンクして Sample.exe を作成します>
g++.exe Sample.o -o Sample.exe -L"D:\DxLib_GCC\プロジェクトに追加すべきファイル_GCC(MinGW)用\8_1_0_i686_w64_posix_dwarf_rt_v6_rev0" -L"D:\MinGW_8_1_0_i686_w64_posix_dwarf_rt_v6_rev0\mingw32\lib" -L"D:\MinGW_8_1_0_i686_w64_posix_dwarf_rt_v6_rev0\mingw32\lib" -mwindows -lgcc -lDxLib -lDxUseCLib -lDxDrawFunc -ljpeg -lpng -lzlib -ltiff -ltheora_static -lvorbis_static -lvorbisfile_static -logg_static -lbulletdynamics -lbulletcollision -lbulletmath -lopusfile -lopus -lsilk_common -lcelt
上記のコマンドに書かれているパスの中の
D:\MinGW_8_1_0_i686_w64_posix_dwarf_rt_v6_rev0 と
D:\DxLib_GCC
の部分は、それぞれ Kuro_Anpanさんのお手元の MinGW 8.1.0 のパスと
DXライブラリMinGW版 のパスに置き換えてください m(_ _)m
|
Re: gcc でのDxライブラリの環境構築について ( No.2 ) |
- 名前:Kuro_Anpan 日時:2021/08/13 16:57
回答ありがとうございます。
原因は(-m32を付けていたとしても)MinGWがどうも64bit版でコンパイルやリンクを行っていたことにあるようでした。
MinGWをアンインストールし、インストールし直したところ、なぜか偶然32bit環境のものをインストールしたようで、これでコンパイル・リンクすることでうまくいったようです。
以下のコマンドを実行することで、問題なく動作するようであるtest.exeを作成できました。
(test.cppと同じフォルダにDxLib_GCC\プロジェクトに追加すべきファイル_GCC(MinGW)用\8_1_0_i686_w64_posix_dwarf_rt_v6_rev0の中身が入ったDxlibraryというフォルダを作成しました。)
>g++.exe -c test.cpp -o test.o -DDX_GCC_COMPILE -I"Dxlibrary"
>g++.exe test.o -o test.exe -L"Dxlibrary" -lDxLib -lDxUseCLib -lDxDrawFunc -ljpeg -lpng -lzlib -ltiff -ltheora_static -lvorbis_static -lvorbisfile_static -logg_static -lbulletdynamics -lbulletcollision -lbulletmath -lopusfile -lopus -lsilk_common -lcelt
-DDX_GCC_COMPILE_4_9_2 -DDX_NON_INLINE_ASM を入れずともtest.exeは問題なく機能したのですが、この二つのオプションはどのような場合に加えるべきなのでしょうか。
|
Re: gcc でのDxライブラリの環境構築について ( No.3 ) |
- 名前:Kuro_Anpan 日時:2021/08/13 18:21
(追記)
DrawCircle()を使おうとしたところ、作成したexeファイルを実行しようとした際にdllが存在しないと言われたので、リンク時のオプションに-staticを加えました。
|
Re: gcc でのDxライブラリの環境構築について ( No.4 ) |
- 名前:管理人 日時:2021/08/14 02:19
無事コンパイル・リンクできたようで何よりです
> -DDX_GCC_COMPILE_4_9_2 -DDX_NON_INLINE_ASM を入れずともtest.exeは問題なく機能したのですが、この二つのオプションはどのような場合に加えるべきなのでしょうか。
すみません、こちらはDXライブラリのソースをコンパイルするときに必要なオプションなのですが、
DXライブラリを使用するプログラムでは不要なオプションでした m(_ _;m
> DrawCircle()を使おうとしたところ、作成したexeファイルを実行しようとした際にdllが存在しないと言われたので、リンク時のオプションに-staticを加えました。
ご情報ありがとうございます
今まで MinGW で作成した exeファイルは dllも一緒にないと実行できないので不便だと思っていたのですが、-static というオプションを追加すればよかったのですね… (・・;;
|
Re: gcc でのDxライブラリの環境構築について ( No.5 ) |
- 名前:Kuro_Anpan(解決済) 日時:2021/08/14 06:53
なるほど、-DDX_GCC_COMPILE_4_9_2 と-DDX_NON_INLINE_ASM は必ずしも必要ではないのですね。
-staticでDrawCircle()が動くのは確認できたのですが、私は-staticがどのようなdllをどうリンクしているのかは理解できてないので、これでは不十分なのかもしれません。
ほとんど理解できてないのですが、どうも-staticはあまり使わないほうが良いようです。
Visual Studioのリリースは-staticを付けてリンクしているのかと思っていたのですが、そんな簡単な話ではないということでしょうか…。
ともかく、無事に動作する実行ファイルを作ることができました。
親切かつ迅速な対応をありがとうございました。
|