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
すべて解決しました。忙しいところありがとうございました!!!
追記:
ビルド&実行確認できました。ありがとうございました!
|