Re: ios板のDxLiBMakeとDxMakeUseLibの作り方について ( No.1 ) |
- 名前:管理人 日時:2024/10/02 22:44
すみません、iOS のライブラリファイルのビルドについてちょっと私も失念していて
情報を纏めるのに時間が掛かるので、次の週末にご返信いたします m(_ _;m
( 最近は過去に準備したライブラリファイルビルド用のバッチファイルを実行するだけなので
セットアップの仕方を失念しています… )
|
Re: ios板のDxLiBMakeとDxMakeUseLibの作り方について ( No.2 ) |
- 名前:管理人 日時:2024/10/05 02:33
すみません、iOS のライブラリファイルのビルドは少し複雑なため、以下の手順で
『プロジェクトにDXライブラリのソースファイルを追加して、一緒にビルドしてしまう』
方法で代用していただければと思います m(_ _;m
1.ダウンロードページからDXライブラリのソースファイルをダウンロードします
<ダウンロードページ>
https://dxlib.xsrv.jp/dxdload.html
↑こちらのページの一番下にあるダウンロードリンクです
( 『DXライブラリ(Ver3.24d)のプロジェクトをダウンロードする(zip圧縮形式(約5.67MB))』と書かれているリンク )
2.こちらのURLから『DXライブラリのソースファイルを直接コンパイルして使うサンプルプロジェクト( Windows用 )』の
zipファイルをダウンロードします
https://dxlib.xsrv.jp/temp/DxLibSourceTest_WithUseCLib.zip
3.自身のプロジェクトにDXライブラリのソースファイルの中の『DxLibMake』フォルダの中の全ての cppファイルと、
『DxLibMake』フォルダの中の『iOS』フォルダの中の全ての cppファイルを追加します
4.プロジェクトの『Build Settings』の中の『Apple Clang - Custom Compiler Flags』の中の『Other C Flags』に
-DGCC_VER
-DDX_NON_LIVE2D_CUBISM4
の2つを追加します
5.プロジェクトの『Build Settings』の中の『Search Paths』の中の『Header Search Paths』に
手順2でダウンロードした DxLibSourceTest_WithUseCLib.zip の中にある以下のパスを追加します
・『DxLibSourceTest_WithUseCLib』フォルダの中の『DxLibSource』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『bullet-2.75_rename』フォルダの中の『src』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『jpeg-9a』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『liboggSVN』フォルダの中の『include』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『libtheoraSVN』フォルダの中の『include』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『libvorbisSVN』フォルダの中の『include』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『libvorbisSVN』フォルダの中の『lib』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『lpng1637』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『opus-1.1.1』フォルダの中の『include』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『opus-1.1.1』フォルダの中の『celt』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『opus-1.1.1』フォルダの中の『silk』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『opus-1.1.1』フォルダの中の『win32』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『opusfile-0.7』フォルダの中の『include』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『tiff-4.0.3』フォルダの中の『libtiff』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『zlib-1.2.12』フォルダのパス
上記の手順を行うとDXライブラリのソースファイルを直接ビルドする形で使用することができます
( DXライブラリ系のライブラリファイルを作る必要が無くなります )
|
Re: ios板のDxLiBMakeとDxMakeUseLibの作り方について ( No.3 ) |
- 名前:管理人 日時:2024/10/05 04:04
> みこさん
すみません、Android もライブラリファイルのビルドは少し複雑なため、以下の手順で
『プロジェクトにDXライブラリのソースファイルを追加して、一緒にビルドしてしまう』
方法で代用していただければと思います m(_ _;m
1.ダウンロードページからDXライブラリのソースファイルをダウンロードします
<ダウンロードページ>
https://dxlib.xsrv.jp/dxdload.html
↑こちらのページの一番下にあるダウンロードリンクです
( 『DXライブラリ(Ver3.24d)のプロジェクトをダウンロードする(zip圧縮形式(約5.67MB))』と書かれているリンク )
2.こちらのURLから『DXライブラリのソースファイルを直接コンパイルして使うサンプルプロジェクト( Windows用 )』の
zipファイルをダウンロードします
https://dxlib.xsrv.jp/temp/DxLibSourceTest_WithUseCLib.zip
3.Androidのプロジェクトの cppファイルがあるフォルダにDXライブラリのソースファイルの中の
『DxLibMake』フォルダの中の全ての cppファイルと hファイルコピーします、加えて
『DxLibMake』フォルダの中の『Android』フォルダの中の全ての cppファイルと hファイルもコピーします
4.プロジェクトの『CMakeLists.txt』の『add_library』の中に手順3で追加した全ての cppファイルのパスを追加します
5.プロジェクトの『CMakeLists.txt』の『include_directories』の中に
手順2でダウンロードした DxLibSourceTest_WithUseCLib.zip の中にある以下のパスを追加します
・『DxLibSourceTest_WithUseCLib』フォルダの中の『DxLibSource』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『bullet-2.75_rename』フォルダの中の『src』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『jpeg-9a』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『liboggSVN』フォルダの中の『include』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『libtheoraSVN』フォルダの中の『include』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『libvorbisSVN』フォルダの中の『include』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『libvorbisSVN』フォルダの中の『lib』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『lpng1637』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『opus-1.1.1』フォルダの中の『include』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『opus-1.1.1』フォルダの中の『celt』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『opus-1.1.1』フォルダの中の『silk』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『opus-1.1.1』フォルダの中の『win32』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『opusfile-0.7』フォルダの中の『include』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『tiff-4.0.3』フォルダの中の『libtiff』フォルダのパス
・『DxLibSourceTest_WithUseCLib』フォルダの中の『External』フォルダの中の『zlib-1.2.12』フォルダのパス
5.プロジェクトの『CMakeLists.txt』の空いている箇所に以下の記述を追加します
add_compile_definitions( DX_NON_LIVE2D_CUBISM4 )
上記の手順を行うとDXライブラリのソースファイルを直接ビルドする形で使用することができます
( DXライブラリ系のライブラリファイルを作る必要が無くなります )
|
Re: ios板のDxLiBMakeとDxMakeUseLibの作り方について ( No.4 ) |
- 名前:kaiser 日時:2024/10/10 08:16
ご返答いただきありがとうございます
少々お聞きしたいのですが
上記のとおりそれぞれ追加した際以下のエラーがでまして他に設定するものがありますでしょうか?
Ld /Users/kaiser/Library/Developer/Xcode/DerivedData/dxlib-dvzywuqnzhqlygflwyucinvxakjz/Build/Products/Debug-iphonesimulator/dxlib.app/dxlib normal (in target 'dxlib' from project 'dxlib')
cd /Users/kaiser/work/dxlib/dxlib
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -target x86_64-apple-ios15.5-simulator -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator15.5.sdk -L/Users/kaiser/Library/Developer/Xcode/DerivedData/dxlib-dvzywuqnzhqlygflwyucinvxakjz/Build/Products/Debug-iphonesimulator -F/Users/kaiser/Library/Developer/Xcode/DerivedData/dxlib-dvzywuqnzhqlygflwyucinvxakjz/Build/Products/Debug-iphonesimulator -filelist /Users/kaiser/Library/Developer/Xcode/DerivedData/dxlib-dvzywuqnzhqlygflwyucinvxakjz/Build/Intermediates.noindex/dxlib.build/Debug-iphonesimulator/dxlib.build/Objects-normal/x86_64/dxlib.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -dead_strip -Xlinker -object_path_lto -Xlinker /Users/kaiser/Library/Developer/Xcode/DerivedData/dxlib-dvzywuqnzhqlygflwyucinvxakjz/Build/Intermediates.noindex/dxlib.build/Debug-iphonesimulator/dxlib.build/Objects-normal/x86_64/dxlib_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -Xlinker -objc_abi_version -Xlinker 2 -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __entitlements -Xlinker /Users/kaiser/Library/Developer/Xcode/DerivedData/dxlib-dvzywuqnzhqlygflwyucinvxakjz/Build/Intermediates.noindex/dxlib.build/Debug-iphonesimulator/dxlib.build/dxlib.app-Simulated.xcent -framework Foundation -framework UIKit -framework CoreText -framework MessageUI -framework QuartzCore -framework GameController -framework CoreGraphics -framework OpenGLES -framework GLKit -framework OpenAL -framework CoreMotion -framework AudioToolbox -Xlinker -no_adhoc_codesign -Xlinker -dependency_info -Xlinker /Users/kaiser/Library/Developer/Xcode/DerivedData/dxlib-dvzywuqnzhqlygflwyucinvxakjz/Build/Intermediates.noindex/dxlib.build/Debug-iphonesimulator/dxlib.build/Objects-normal/x86_64/dxlib_dependency_info.dat -o /Users/kaiser/Library/Developer/Xcode/DerivedData/dxlib-dvzywuqnzhqlygflwyucinvxakjz/Build/Products/Debug-iphonesimulator/dxlib.app/dxlib
ld: entry point (_main) undefined. for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
多分mainが定義されていないというエラーだと思われますが
追加したiOSフォルダ内のDxSystemiOS_ObjC.mmを見る限り
int main(int argc, char *argv[])
{
[ DxLibViewController dummyFunction ] ;
[ DxLibGLView dummyFunction ] ;
@autoreleasepool
{
return UIApplicationMain(argc, argv, nil, NSStringFromClass([DxLibAppDelegate class]));
}
}
はソースに確認できております
また追加したtestmain.cppはサンプルの通り
#include "DxLib.h"
// プログラムは android_main から始まります
int ios_main( void )
{
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1 ; // エラーが起きたら直ちに終了
}
DrawBox( 220, 140, 420, 340, GetColor( 255,255,255 ), TRUE ) ; // 四角形を描画する
WaitKey() ; // キー入力待ち
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
としておりincludeのパスもそれぞれ追加しました
環境として
MacOS Monterery12.2.1
Xcode13.4.1
です
また、通常のiosでのDXライブラリ iOS版 (Ver3.24d)
ではとくに問題なく実行及びビルドができます
おテスですがよろしくお願いします
|
Re: ios板のDxLiBMakeとDxMakeUseLibの作り方について ( No.5 ) |
- 名前:kaiser 日時:2024/10/10 09:06
補足としてmacはX86です
一応ARM板もありますのでそちらもためしてみます
|
Re: ios板のDxLiBMakeとDxMakeUseLibの作り方について ( No.6 ) |
- 名前:管理人 日時:2024/10/11 00:44
> 上記のとおりそれぞれ追加した際以下のエラーがでまして他に設定するものがありますでしょうか?
いえ、手元で試した限りでは説明にある以外の手順は必要ありませんでした
ただ、すみません、説明が不足していました
No.2 の手順は『DXライブラリiOS版を使用してビルドできる状態となったプロジェクト』に対して
行う手順となっていますので、もし新規作成したプロジェクトに対して No.2 の手順だけを行った場合は
正常にビルドができないと思います
もしその場合は、まず『使い方』ページのDXライブラリiOS版を使用したプロジェクト設定を
参考にDXライブラリiOS版を使用するプロジェクトとしてビルドができる状態にした後、
No.2 の手順を行ってみてください m(_ _;m
|
Re: ios板のDxLiBMakeとDxMakeUseLibの作り方について ( No.7 ) |
- 名前:みこ 日時:2024/10/29 17:47
遅くなりましたがAndroid版の件ありがとうございます!
こちら手順通りに試してみましたが2点問題がありました
【GCC_VER について】
大量のエラーが発生しましたので、
CMakeListsの以下を修正したところ解決しました
add_compile_definitions( DX_NON_LIVE2D_CUBISM4 )
↓
add_compile_definitions(
DX_NON_LIVE2D_CUBISM4
GCC_VER
)
【h.inファイルのインクルード問題について】
以下エラーが発生しました
fatal error: 'ogg/config_types.h' file not found
External/liboggSVN/include/ogg/ 内を確認したところ
"config_types.h.in" が格納されていましたのでCMakeListsに以下を追加してみました
configure_file(
${任意のディレクトリ}/External/liboggSVN/include/ogg/config_types.h.in # 入力ファイル
${任意のディレクトリ}/External/liboggSVN/include/ogg/config_types.h # 出力ファイル
@ONLY
)
結果はうまくいかず以下エラーになりました
C/C++: External/liboggSVN/include/ogg/config_types.h:9:23: error: expected value in expression
C/C++: #if INCLUDE_INTTYPES_H
C/C++: ^
C/C++: External/liboggSVN/include/ogg/config_types.h:12:21: error: expected value in expression
C/C++: #if INCLUDE_STDINT_H
C/C++: ^
C/C++: External/liboggSVN/include/ogg/config_types.h:15:24: error: expected value in expression
C/C++: #if INCLUDE_SYS_TYPES_H
C/C++: ^
C/C++: External/liboggSVN/include/ogg/config_types.h:19:10: error: C++ requires a type specifier for all declarations
C/C++: typedef ogg_int16_t;
C/C++: ~~~~~~~ ^
C/C++: External/liboggSVN/include/ogg/config_types.h:20:10: error: C++ requires a type specifier for all declarations
C/C++: typedef ogg_uint16_t;
C/C++: ~~~~~~~ ^
C/C++: External/liboggSVN/include/ogg/config_types.h:21:10: error: C++ requires a type specifier for all declarations
C/C++: typedef ogg_int32_t;
C/C++: ~~~~~~~ ^
C/C++: External/liboggSVN/include/ogg/config_types.h:22:10: error: C++ requires a type specifier for all declarations
C/C++: typedef ogg_uint32_t;
C/C++: ~~~~~~~ ^
C/C++: External/liboggSVN/include/ogg/config_types.h:23:10: error: C++ requires a type specifier for all declarations
C/C++: typedef ogg_int64_t;
C/C++: ~~~~~~~ ^
C/C++: 8 errors generated.
/************************ 出力された config_types.h ************************/
#ifndef __CONFIG_TYPES_H__
#define __CONFIG_TYPES_H__
/* these are filled in by configure */
#define INCLUDE_INTTYPES_H
#define INCLUDE_STDINT_H
#define INCLUDE_SYS_TYPES_H
if INCLUDE_INTTYPES_H
include <inttypes.h>
endif
if INCLUDE_STDINT_H
include <stdint.h>
endif
if INCLUDE_SYS_TYPES_H
include <sys/types.h>
endif
typedef ogg_int16_t;
typedef ogg_uint16_t;
typedef ogg_int32_t;
typedef ogg_uint32_t;
typedef ogg_int64_t;
#endif
/************************************************************************/
応急処置として以下内容のconfig_types.hを作成したところビルドが通りました
/************************ 作成した config_types.h ************************/
#ifndef __CONFIG_TYPES_H__
#define __CONFIG_TYPES_H__
#ifndef _WIN32
#include <sys/types.h>
#endif
typedef int16_t ogg_int16_t;
typedef uint16_t ogg_uint16_t;
typedef int32_t ogg_int32_t;
typedef uint32_t ogg_uint32_t;
typedef int64_t ogg_int64_t;
#endif
/************************************************************************/
応急処置で動くので問題は無いですがあまり外部ソースをいじりたくないのと、iOS版やWindows版と併用した場合何かしらの競合が起きそうな気がするのでもし解決策がありましたらご教授頂きたいです
後日iOS版も試してみますので何か分かりましたらご報告させて頂きます
お手数をお掛けしますがよろしくお願いいたします
|
Re: ios板のDxLiBMakeとDxMakeUseLibの作り方について ( No.8 ) |
- 名前:管理人 日時:2024/10/30 02:07
> こちら手順通りに試してみましたが2点問題がありました
申し訳ありません、確認したところ DxLibSourceTest_WithUseCLib\External の中にあるファイルの一部が最新になっていませんでした
( 手元でビルドした際は DxLibSourceTest_WithUseCLib\External と中身が同じだと思い込み、別の場所にある External フォルダを使用していました )
ご自身で解決済みとのことなので不要かもしれませんが、最新の状態に更新したものをアップしましたので
よろしければこちらをお使いください m(_ _;m
https://dxlib.xsrv.jp/temp/DxLibSourceTest_WithUseCLib.zip
( ↑こちらのバージョンを使用することで GCC_VER の追加が必要である事や config_types.h 等の問題は解消されます )
|
Re: ios板のDxLiBMakeとDxMakeUseLibの作り方について ( No.9 ) |
- 名前:みこ 日時:2024/10/30 07:02
ありがとうございます!
最新のファイルを使用したところ問題無くビルドが通りました
またiOS版も正常にビルドが通りましたので
念のため追加で作業した内容も補足します
・[Other Linker Flags] の以下項目を削除
-lDxLib_iOS
-lDxUseCLib_iOS
・[プロジェクトに追加すべきファイル_iOS用] から以下ファイルを削除
全ての.hファイル
libDxLib_iOS.a
libDxUseCLib_iOS.a
・[プロジェクトに追加すべきファイル_iOS用]のフォルダ名を変更
Debug-iphonesimulator -> DebugSimulator-iphoneos
Release-iphonesimulator -> ReleaseSimulator-iphoneos
よく見たら $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) の文字列がいつの間にか変わっていました。
古いバージョンのXcodeで作成したプロジェクトをそのまま使ったのでそのせいかもしれません
・実機デバッグのみ検証したのでシミュレーターではどうなるか分かりません
Xcode 15.2
|
Re: ios板のDxLiBMakeとDxMakeUseLibの作り方について ( No.10 ) |
- 名前:管理人 日時:2024/11/01 01:57
無事ビルドが通ったようでなによりです
> ・[プロジェクトに追加すべきファイル_iOS用]のフォルダ名を変更
> Debug-iphonesimulator -> DebugSimulator-iphoneos
> Release-iphonesimulator -> ReleaseSimulator-iphoneos
手元の環境( Xcode 16 )ではシミュレーターも実機もフォルダ名を変更することなく
Debug-iphonesimulator Debug-iphoneos
Release-iphonesimulator Release-iphoneos
のままで正常にビルドすることができました
今後も『フォルダ名を変更しないと正常にビルドできなかった』とのご報告がありましたら
より詳しく調べてみようと思います
|