トップページ > 記事閲覧
gcc12.1.0(MinGW)向けのビルド済みライブラリが欲しい!
名前:初心者 日時: 2022/06/05 23:25

管理人様へ 題名の通りでございます。 大変めんどくさい依頼だと思うのですが、対応していただけるとありがたいです。 また、DXLib の生プロジェクトから自分でビルドすることも試しましたが、どの .cpp ファイルからどの .a ファイルを作れば良いのか初心者の私には全く分からず、挫折しました… お時間と気力がありましたら .cpp と .a の依存関係(?)についても教えていただけるとありがたいです。 自分の環境: Windows 10 MSYS2 MinGW x64 gcc version 12.1.0 (Rev2, Built by MSYS2 project) 環境構築: h t t p s : / / w w w . m s y s 2 . o r g / ←コチラから MSYS2 を入手でき、その後 x64 にて pacman で gcc をインストールすれば(多分)いけると思います。
メンテ

Page: 1 |

Re: gcc12.1.0(MinGW)向けのビルド済みライブラリが欲しい! ( No.1 )
名前:初心者 日時:2022/06/05 23:43

ちなみに必要になった経緯を話すと、 まず初めに DXLib_GCC の 8_2_0 で試してみた -> どうやら .a が 32bit 用らしく、リンクに失敗。 次に 64bit用っぽそうな 7_3_0_x86_64_w64_win32_seh_rt_v5_rev0 で試してみた -> 半分OK! ------------------------------------------------------------------------------------- #include "DxLib.h" // プログラムは WinMain から始まります int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1 ; // エラーが起きたら直ちに終了 } DrawPixel( 320 , 240 , GetColor( 255,255,255 ) ) ; // 点を打つ WaitKey() ; // キー入力待ち DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 } -------------------------------------------------------------------------------------- ↑このコードは問題なく動いたが、DrawFormatString 関数を使用すると次のようなリンクエラーが出てしまった… -------------------------------------------------------------------------------------- $ make build type: debug g++ build/debug/WinMain.o -static -mwindows -LC:/dxlib -lDxLib -lDxUseCLib -lDxDrawFunc -ljpeg -lpng -lzlib -ltiff -ltheora_static -lvorbis_static -lvorbisfile_static -logg_static -lbulletdynamics -lbulletcollision -lbulletmath -lopusfile -lopus -lsilk_common -lcelt -o build/debug/---.exe C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: build/debug/WinMain.o:C:\Users\---\Desktop\---/src/WinMain.cpp:114: undefined reference to `DxLib::DrawFormatString(int, int, unsigned int, wchar_t const*, ...)' C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: build/debug/WinMain.o: in function `WinMain': C:\Users\---\Desktop\---/src/WinMain.cpp:117: undefined reference to `DxLib::DrawFormatString(int, int, unsigned int, wchar_t const*, ...)' collect2.exe: error: ld returned 1 exit status make: *** [makefile:101: build/debug/project_template.exe] エラー 1 -------------------------------------------------------------------------------------- 最後に DXLib を自分でビルドしようとしたが、無理でした!
メンテ
Re: gcc12.1.0(MinGW)向けのビルド済みライブラリが欲しい! ( No.2 )
名前:管理人 日時:2022/06/06 03:33

> gcc12.1.0(MinGW)向けのビルド済みライブラリが欲しい! 了解しました gcc version 12.1.0 用のライブラリファイルを追加した暫定最新バージョンをアップしましたので、 よろしければこちらからダウンロードしてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 > お時間と気力がありましたら .cpp と .a の依存関係(?)についても教えていただけるとありがたいです。 各 a ファイルのビルドで使用している cpp ファイルは以下の通りです libDxLib.a と libDxLibW.a Windows\DxBaseFuncWin.cpp Windows\DxBaseImageWin.cpp Windows\DxFileWin.cpp Windows\DxFontWin.cpp Windows\DxGraphicsAPIWin.cpp Windows\DxGraphicsD3D9.cpp Windows\DxGraphicsD3D11.cpp Windows\DxGraphicsFilterD3D9.cpp Windows\DxGraphicsFilterD3D11.cpp Windows\DxGraphicsFilterWin.cpp Windows\DxGraphicsWin.cpp Windows\DxGuid.cpp Windows\DxInputWin.cpp Windows\DxKeyHookBinary.cpp Windows\DxLive2DCubism4Win.cpp Windows\DxLogWin.cpp Windows\DxMaskD3D9.cpp Windows\DxMaskD3D11.cpp Windows\DxMaskWin.cpp Windows\DxMemoryWin.cpp Windows\DxModelD3D9.cpp Windows\DxModelD3D11.cpp Windows\DxModelWin.cpp Windows\DxMovieWin.cpp Windows\DxNetworkWin.cpp Windows\DxShaderCodeBin_Base_D3D9.cpp Windows\DxShaderCodeBin_Base_D3D11.cpp Windows\DxShaderCodeBin_Base3D_D3D9.cpp Windows\DxShaderCodeBin_Base3D_D3D11.cpp Windows\DxShaderCodeBin_Filter_D3D9.cpp Windows\DxShaderCodeBin_Filter_D3D11.cpp Windows\DxShaderCodeBin_Live2D_Cubism4_D3D9.cpp Windows\DxShaderCodeBin_Live2D_Cubism4_D3D11.cpp Windows\DxShaderCodeBin_Model_D3D9.cpp Windows\DxShaderCodeBin_Model_D3D11.cpp Windows\DxShaderCodeBin_RgbaMix_D3D9.cpp Windows\DxShaderCodeBin_RgbaMix_D3D11.cpp Windows\DxShaderCodeTxt_D3D9.cpp Windows\DxShaderCodeTxt_D3D11.cpp Windows\DxSoundConvertWin.cpp Windows\DxSoundWin.cpp Windows\DxSystemWin.cpp Windows\DxThreadWin.cpp Windows\DxWinAPI.cpp Windows\DxWindow.cpp DxArchive_.cpp DxASyncLoad.cpp DxBaseFunc.cpp DxBaseImage.cpp DxChar.cpp DxCharCodeTable.cpp DxFile.cpp DxFont.cpp DxGateway.cpp DxGraphics.cpp DxGraphicsFilter.cpp DxHandle.cpp DxHeap.cpp DxInput.cpp DxInputString.cpp DxJson.cpp DxLive2DCubism4.cpp DxLog.cpp DxMask.cpp DxMath.cpp DxMemImg.cpp DxMemory.cpp DxModel.cpp DxModelLoader0.cpp DxModelLoader1.cpp DxModelLoader2.cpp DxModelLoader3.cpp DxModelLoader4.cpp DxModelLoaderVMD.cpp DxModelRead.cpp DxMovie.cpp DxNetwork.cpp DxRingBuffer.cpp DxSimpleHeap.cpp DxSoftImage.cpp DxSound.cpp DxSoundConvert.cpp DxSystem.cpp DxThread.cpp libDxUseCLib.a と libDxUseCLibW.a Windows\DxUseCStrmBaseFilter.cpp Windows\DxUseCLibOggD3D9.cpp Windows\DxUseCLibOggD3D11.cpp Windows\DxUseCLibOggWin.cpp DxUseCLib.cpp DxUseCLibOgg.cpp DxUseCLibPhysics.cpp DxUseCLibLive2DCubism4.cpp libDxDrawFunc.a DxMemImgDrawFunction0.cpp DxMemImgDrawFunction1.cpp DxMemImgDrawFunction2.cpp DxMemImgDrawFunction3.cpp
メンテ
Re: gcc12.1.0(MinGW)向けのビルド済みライブラリが欲しい! ( No.3 )
名前:初心者 日時:2022/06/06 05:43

迅速な対応ありがとうございます! しかし変わらずエラーが出てしまいました… コードは以下の通りで、DrawFormatString() を DrawString() に変更しても変わりませんでした。 ただ、DrawLine() に変更したところ問題なくビルド&実行できたので、文字コード辺りに問題があるかもしれません。 何か問題点があれば教えていただきたいです。 よろしくお願いいたします。 現状: main.cpp は utf-8 / CRLF コンパイル時のフラグに _UNICODE と UNICODE, _WIN32, DX_GCC_COMPILE マクロを定義 リンク時のフラグに -static および -mwindows を指定 /* main.cpp */ -------------------------------------------------- #include <DxLib.h> int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { if (DxLib_Init() == -1) { return -1; } SetDrawScreen(DX_SCREEN_BACK); while (!ProcessMessage()) { ClearDrawScreen(); DrawFormatString(0, 10, GetColor(0xff, 0xff, 0xff), TEXT("Hello world!")); ScreenFlip(); } DxLib_End(); return 0; } -------------------------------------------------- 追記: .cpp と .a の依存関係についてせっかくご丁寧に回答を頂きましたが、自分でビルドするのは骨が折れそうなので自分でビルドするのはやめようと思います… ありがとうございました。
メンテ
Re: gcc12.1.0(MinGW)向けのビルド済みライブラリが欲しい! ( No.4 )
名前:管理人 日時:2022/06/06 13:04

> コンパイル時のフラグに _UNICODE と UNICODE, _WIN32, DX_GCC_COMPILE マクロを定義 コンパイル時のフラグに _UNICODE と UNICODE を入れてしまいますと、文字列が UNICODE で扱う ことになってしまいますので、char の代わりに wchar_t を使用しないといけなくなります 普通の char で文字列を扱う場合は _UNICODE と UNICODE は無しでコンパイルしてみてください m(_ _)m
メンテ
Re: gcc12.1.0(MinGW)向けのビルド済みライブラリが欲しい! ( No.5 )
名前:初心者 日時:2022/06/06 22:38

ありがとうございます。 _UNICODE と UNICODE を外したところ、正常にビルド&実行できました。 ところで _UNICODE と UNICODE フラグを利用できないということは dxlib では Shift-JIS(?) のみのサポートで、Unicode は利用できないということでしょうか?
メンテ
Re: gcc12.1.0(MinGW)向けのビルド済みライブラリが欲しい! ( No.6 )
名前:管理人 日時:2022/06/07 00:18

> ところで _UNICODE と UNICODE フラグを利用できないということは dxlib では Shift-JIS(?) のみのサポートで、Unicode は利用できないということでしょうか? いえ、利用できます Unicode を使用されたい場合は _UNICODE と UNICODE フラグを有りでビルドしてください ただ、プログラムは以下のようにワイド文字型を使用する形に変更する必要があります ( 文字列の "" の囲いの前に L を書くとワイド文字列( Unicode文字列 )になります ) #include <DxLib.h> int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { if (DxLib_Init() == -1) { return -1; } SetDrawScreen(DX_SCREEN_BACK); while (!ProcessMessage()) { ClearDrawScreen(); DrawFormatString(0, 10, GetColor(0xff, 0xff, 0xff), L"Hello world!"); ScreenFlip(); } DxLib_End(); return 0; }
メンテ
Re: gcc12.1.0(MinGW)向けのビルド済みライブラリが欲しい! ( No.7 )
名前:初心者 日時:2022/06/07 00:36

ありがとうございます。 上記のコードをビルドしてみましたが、やはり undefined reference to とのことで、リンクエラーが出てしまいます。 何か原因等分かりますでしょうか? -------------------------------------------------- $ make build type: debug g++ -Wall -Wextra -std=c++17 -I./include -IC:/dxlib -g -O0 -DUNICODE -D_UNICODE -D_WIN32 -DDX_GCC_COMPILE -D_DEBUG -c -o build/debug/main.o src/main.cpp In file included from C:/dxlib/DxLib.h:1897, from src/main.cpp:1: C:/dxlib/DxFunctionWin.h:275:201: warning: multi-line comment [-Wcomment] 275 | extern int SetUseXboxControllerDirectInputFlag( int Flag ) ; // Xbox360box OneirectInputRUE:DirectInputALSE:DirectInput) )DxLib_Init | g++ build/debug/main.o -static -mwindows -LC:/dxlib -lDxLib -lDxUseCLib -lDxDrawFunc -ljpeg -lpng -lzlib -ltiff -ltheora_static -lvorbis_static -lvorbisfile_static -logg_static -lbulletdynamics -lbulletcollision -lbulletmath -lopusfile -lopus -lsilk_common -lcelt -o build/debug/dxlib_test.exe C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: build/debug/main.o:C:\Users\---\Desktop\dxlib_test/src/main.cpp:15: undefined reference to `DxLib::DrawFormatString(int, int, unsigned int, wchar_t const*, ...)' collect2.exe: error: ld returned 1 exit status make: *** [makefile:101: build/debug/dxlib_test.exe] エラー 1 -------------------------------------------------- 追記: debug ビルドが影響しているかもしれないと思い、release ビルドもしてみましたが、変わりませんでした。 debug ビルドと release ビルドの変更点: debug オプション: -g -O0 -D_DEBUG release オプション: -O2 -DNDEBUG これらと出力ファイルパス以外は変わりません。
メンテ
Re: gcc12.1.0(MinGW)向けのビルド済みライブラリが欲しい! ( No.8 )
名前:管理人 日時:2022/06/07 00:35

すみません、Unicode版でビルドする際は -lDxLib -lDxUseCLib ↑ こちらの部分を -lDxLibW -lDxUseCLibW に変更してください m(_ _)m ( Unicode版DXライブラリの a ファイルを使用する必要があります )
メンテ
Re: gcc12.1.0(MinGW)向けのビルド済みライブラリが欲しい! ( No.9 )
名前:初心者(解決済み) 日時:2022/06/07 00:39

ありがとうございます。 あっ、なるほどそりゃリンクエラー出ますねw すべて解決しました。忙しいところありがとうございました!!! 追記: ビルド&実行確認できました。ありがとうございました!
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存