Re: Android用DXライブラリでのlive2Dの併用 ( No.1 ) |
- 名前:管理人 日時:2018/07/29 01:30
すみません、試していないので分かりません
live2D SDK は現在 バージョン 2.0系と バージョン 3.0系で大きく異なるようですが、
どちらのバージョンを使用されるご予定でしょうか?
|
Re: Android用DXライブラリでのlive2Dの併用 ( No.2 ) |
- 名前:corner 日時:2018/07/29 11:36
>管理人様
ご返信ありがとうございます。
手元にあるlive2dのSDKは2.0のものです。
spritestudioは5.0系です。
どちらも最新のものにした方がいいでしょうか?
|
Re: Android用DXライブラリでのlive2Dの併用 ( No.3 ) |
- 名前:管理人 日時:2018/07/31 00:20
Live2D についてはとりあえず 2.0 系を試したところ、正常に使うことができました
以下の手順で導入することができましたので、よろしければお試しください
1. http://sites.cybernoids.jp/cubism-sdk2/opengl2-1 からバージョン 2.1.06_1 の SDK を
ダウンロードして中身をなるべく浅い階層のフォルダに圧縮ファイルの中身を展開
2. パッケージの中の include フォルダパスをプロジェクトのプロパティの
『構成プロパティ』→『C/C++』→『全般』の『追加のインクルード ディレクトリ』に追加
3, パッケージの中の lib\android\armeabi フォルダパスをプロジェクトのプロパティの
『構成プロパティ』→『リンカー』→『全般』の『追加のライブラリ ディレクトリ』に追加
4.『構成プロパティ』→『リンカー』→『入力』の『ライブラリの依存ファイル』に『live2D』を追加
5. パッケージの『sample\simple\proj.android\res\raw』フォルダにある haru.moc, texture_00.png
texture_01.png, texture_02.png の4つのサンプルファイルを
ソリューション エクスプローラーの assetsフォルダ( Androidアプリのファイルを入れるフォルダ )に
『Live2D\haru』というフォルダを掘ってその中に追加。( 別に Live2D\haru である必要はありませんが
後述のサンプルプログラムでそのフォルダを指定しているので… )
6.上記の設定の上で以下のプログラムでサンプルファイルを再生できます
尚、Live2D はエミュレーターの OpenGL ES 2.0 の機能では役不足のようで、
実機での実行しないと延々と OpenGL ES 2.0 関係のエラーがログ出力されますので、
実行の際は必ず実機をお使いください m(_ _)m ( 実機でもあまり古い機種だと駄目かも知れません… )
#include "DxLib.h"
#include "Live2D.h"
#include "Live2DModelOpenGL.h"
// 画面解像度
#define SCREEN_SIZE_X (720)
#define SCREEN_SIZE_Y (1280)
// ネームスペース live2d を使う指定
using namespace live2d;
// テクスチャのグラフィックハンドルを保存する配列
static int live2DModelTexture_GraphHandle[ 3 ] ;
// Live2D のモデルのポインタ
static Live2DModelOpenGL* live2DModel ;
// live2DModel のパラメータで設定する行列
static float matrix[] = {
1,0,0,0,
0,1,0,0,
0,0,1,0,
0,0,0,1
};
int android_main( void )
{
int Live2DModelScreenHandle ;
// 画面解像度を設定
SetGraphMode( SCREEN_SIZE_X, SCREEN_SIZE_Y, 32 ) ;
// Live2D の初期化
Live2D::init() ;
// DXライブラリの初期化
if( DxLib_Init() == -1 )
{
return -1 ;
}
// Live2D のモデルファイルを読み込み
{
int file_handle ;
// ファイルを丸ごとメモリに読み込み
file_handle = FileRead_fullyLoad( "Live2D/haru/haru.moc" ) ;
// Live2D にファイルのバイナリが格納されたアドレスとファイルサイズを渡してLive2DModelOpenGL を作成
live2DModel = Live2DModelOpenGL::loadModel(
FileRead_fullyLoad_getImage( file_handle ),
FileRead_fullyLoad_getSize( file_handle )
) ;
live2DModel->setPremultipliedAlpha( false ) ;
// ファイルをメモリから解放
FileRead_fullyLoad_delete( file_handle ) ;
}
// Live2D のモデルが使用するテクスチャの読み込み
{
// テクスチャファイルを LoadGraph で読み込み
live2DModelTexture_GraphHandle[ 0 ] = LoadGraph( "Live2D/haru/texture_00.png" ) ;
live2DModelTexture_GraphHandle[ 1 ] = LoadGraph( "Live2D/haru/texture_01.png" ) ;
live2DModelTexture_GraphHandle[ 2 ] = LoadGraph( "Live2D/haru/texture_02.png" ) ;
// Live2DModelOpenGL にテクスチャをセット
// ( OpenGL ES テクスチャオブジェクトID の取得に GetGraphOpenGLESTextureObject を使用 )
live2DModel->setTexture( 0, GetGraphOpenGLESTextureObject( live2DModelTexture_GraphHandle[ 0 ] ) ) ;
live2DModel->setTexture( 1, GetGraphOpenGLESTextureObject( live2DModelTexture_GraphHandle[ 1 ] ) ) ;
live2DModel->setTexture( 2, GetGraphOpenGLESTextureObject( live2DModelTexture_GraphHandle[ 2 ] ) ) ;
}
// Live2D のモデルを描画する画面用のグラフィックハンドルを作成
Live2DModelScreenHandle = MakeScreen( SCREEN_SIZE_X, SCREEN_SIZE_Y, TRUE ) ;
// メインループ
while( ProcessMessage() == 0 )
{
// Live2D のモデルを描画する
{
// 描画先を Live2D のモデルを描画するための画面のグラフィックハンドルに変更
SetDrawScreen( Live2DModelScreenHandle ) ;
// 画面をクリア
ClearDrawScreen() ;
// このあたりの行列やパラメータの設定はほぼサンプルそのまま
{
float w = live2DModel->getCanvasWidth() ;
float h = live2DModel->getCanvasHeight() ;
matrix[ 0 ] = 1.0f / w * 2.0f ;
matrix[ 5 ] = -1.0f / w * 2.0f * ( ( float ) SCREEN_SIZE_X / SCREEN_SIZE_Y ) ;
matrix[ 12 ] = -1.0f ;
matrix[ 13 ] = 1.0f ;
live2DModel->setMatrix( matrix ) ;
double t = GetNowCount() / 1000.0 * 2 * M_PI ;
live2DModel->setParamFloat( "PARAM_ANGLE_X", ( float )( 30 * sin( t / 3.0 ) ) ) ;
}
// Live2D のモデルの動きの処理
live2DModel->update() ;
// Live2D のモデルをグラフィックハンドルの画面に描画
live2DModel->draw() ;
// DXライブラリが OpenGL ES に対して行う設定を復帰
RefreshDxLibOpenGLESSetting() ;
}
// 描画先を裏画面に変更
SetDrawScreen( DX_SCREEN_BACK ) ;
// 裏画面の内容をクリア
ClearDrawScreen() ;
// Live2D の描画結果を画面に描画、上下逆さまなので、ここで上下反転して描画
DrawExtendGraph( SCREEN_SIZE_X, SCREEN_SIZE_Y, 0, 0, Live2DModelScreenHandle, TRUE ) ;
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
DxLib_End();
return 0;
}
上記のプログラムの中で使用している、関数 RefreshDxLibOpenGLESSetting は Live2D 対応のために追加した関数なので、
よろしければこちらから RefreshDxLibOpenGLESSetting を追加したバージョンをダウンロードしてください m(_ _)m
https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM.zip // Android版 ARM用
https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x86.zip // Android版 x86用
https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース
SpriteStudio は Ver5 が有難いことにDXライブラリを使用したWindows用のサンプルがあったので、そちらを
Android用に少し手を加えることでSpriteStudioのファイルを再生できました
1. https://github.com/SpriteStudio/ssbpLib こちらの『Clone or download』ボタンからパッケージを
ダウンロードして中身をなるべく浅い階層のフォルダに圧縮ファイルの中身を展開
2. パッケージの中の Players\ssbpLib フォルダパスをプロジェクトのプロパティの
『構成プロパティ』→『C/C++』→『全般』の『追加のインクルード ディレクトリ』に追加
3. パッケージの中の Players\ssbpLib フォルダ以下の cpp ファイルをすべてプロジェクトに追加
( サブフォルダの中にある common\Animator\ssplayer_effect.cpp なども全て追加 )
4. そのままではコンパイルが通らないので、以下の箇所を変更
Players\ssbpLib\common\Helper\DebugPrint.cpp 38行目
sprintf_s( ___str__buffer , 1024, "%s(%d) : %s \n" , fname , (int)line , str.c_str() );
↓
sprintf( ___str__buffer , "%s(%d) : %s \n" , fname , (int)line , str.c_str() );
Players\ssbpLib\common\Helper\DebugPrint.cpp 42行目
throw ThrowErrorMessage( 0 , ___err_message );
↓
// throw ThrowErrorMessage( 0 , ___err_message );
Players\ssbpLib\common\Animator\ssplayer_effect.h 144行目 『std::fmod』→『fmod』
Players\ssbpLib\common\Animator\ssplayer_cellmap.h 38行目 『SsRenderBlendType::_enum::Add』→『(SsRenderBlendType::_enum)2』
Players\ssbpLib\common\Animator\ssplayer_effect2.cpp 670行目 『auto』→『int』
Players\ssbpLib\common\Loader\sstypes.h 92行目 『std::sqrt』→『sqrt』
Players\ssbpLib\SS5Player.cpp 58行目 『_vsnprintf』→『vsnprintf』
Players\ssbpLib\SS5Player.cpp 2353行目 『nullptr』→『NULL』
Players\ssbpLib\SS5Player.cpp 2919行目 『nullptr』→『NULL』
Players\ssbpLib\SS5Player.cpp 3357行目 『std::sin』→『sin』
Players\ssbpLib\SS5Player.cpp 3358行目 『std::cos』→『cos』
Players\ssbpLib\SS5PlayerPlatform.cpp 344行目 関数 utf8togbk を丸ごと /* */ で括ってコメントアウト
Players\ssbpLib\SS5PlayerPlatform.cpp 370行目 関数 isAbsolutePath の中身を全部消して、代わりに return false; だけを記述
Players\ssbpLib\SS5PlayerPlatform.cpp 30行目
// read the file from hardware
FILE *fp = fopen(pszFileName, pszMode);
SS_BREAK_IF(!fp);
fseek(fp,0,SEEK_END);
*pSize = ftell(fp);
fseek(fp,0,SEEK_SET);
pBuffer = new unsigned char[*pSize];
*pSize = fread(pBuffer,sizeof(unsigned char), *pSize,fp);
fclose(fp);
↓
// read the file from hardware
int fp = FileRead_open(pszFileName);
// SS_BREAK_IF(!fp);
FileRead_seek(fp,0,SEEK_END);
*pSize = FileRead_tell(fp);
FileRead_seek(fp,0,SEEK_SET);
pBuffer = new unsigned char[*pSize];
*pSize = FileRead_read(pBuffer,*pSize,fp);
FileRead_close(fp);
5. 上記の変更を加えた上で、以下のサンプルを動かすことができます
( こちらの元は samples\DXLibrary\basic\sssample.cpp です、
samples\DXLibrary\basic\Resources の中の character_template_comipoフォルダとその中身を
ソリューションエクスプローラーの assetsフォルダに入れておいてください )
#include "DxLib.h"
#include "SS5Player.h"
static int previousTime;
static int waitTime;
int mGameExec;
#define WAIT_FRAME (16)
void init(void);
void update(float dt);
void draw(void);
void relese(void);
/// SS5プレイヤー
ss::Player *ssplayer;
ss::ResourceManager *resman;
/**
* メイン関数
*/
int android_main( void )
{
//DXライブラリの初期化
SetGraphMode(720, 1280, 32 );
if (DxLib_Init() == -1) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
SetDrawScreen(DX_SCREEN_BACK);
//メインループ
mGameExec = 1;
previousTime = GetNowCount();
// プレイヤー初期化
init( );
while(mGameExec == 1){
ClearDrawScreen();
update((float)waitTime / 1000.0f ); //ゲームの更新
draw(); //ゲームの描画
ScreenFlip(); //描画結果を画面に反映
//次のフレームまでの時間待ち
waitTime = GetNowCount() - previousTime;
previousTime = GetNowCount();
if (waitTime < WAIT_FRAME){
WaitTimer((WAIT_FRAME - waitTime));
}else{
if(ProcessMessage() == -1) mGameExec = 0;
}
}
/// プレイヤー終了処理
relese( );
DxLib_End(); // DXライブラリ使用の終了処理
return 0; // ソフトの終了
}
void init( void )
{
/**********************************************************************************
SSアニメ表示のサンプルコード
Visual Studio Community、DXライブラリで動作を確認しています。
ssbpとpngがあれば再生する事ができますが、Resourcesフォルダにsspjも含まれています。
**********************************************************************************/
//リソースマネージャの作成
resman = ss::ResourceManager::getInstance();
//プレイヤーの作成
ssplayer = ss::Player::create();
//アニメデータをリソースに追加
//それぞれのプラットフォームに合わせたパスへ変更してください。
resman->addData("character_template_comipo/character_template1.ssbp");
//プレイヤーにリソースを割り当て
ssplayer->setData("character_template1"); // ssbpファイル名(拡張子不要)
//再生するモーションを設定
ssplayer->play("character_template_3head/stance"); // アニメーション名を指定(ssae名/アニメーション名も可能、詳しくは後述)
//表示位置を設定
ssplayer->setPosition(1280/2, 300);
//スケール設定
ssplayer->setScale(0.5f, 0.5f);
//回転を設定
ssplayer->setRotation(0.0f, 0.0f, 0.0f);
//透明度を設定
ssplayer->setAlpha(255);
//反転を設定
ssplayer->setFlip(false, false);
}
//メインループ
//Zボタンでアニメをポーズ、再開を切り替えできます。
//ポーズ中は左右キーで再生するフレームを変更できます。
static bool sstest_push = false;
static int sstest_count = 0;
static bool sstest_pause = false;
void update(float dt)
{
char str[128];
//パーツ名から座標等のステートの取得を行う場合はgetPartStateを使用します。
ss::ResluteState result;
ssplayer->getPartState(result, "body");
//取得座用の表示
sprintf(str, "body = x:%f y:%f", result.x, result.y);
DrawString(100, 120, str, GetColor(255, 255, 255));
//キー入力操作
int animax = ssplayer->getMaxFrame();
if (CheckHitKey(KEY_INPUT_ESCAPE))
{
mGameExec = 0;
}
if (CheckHitKey(KEY_INPUT_Z))
{
if (sstest_push == false )
{
if (sstest_pause == false )
{
sstest_pause = true;
sstest_count = ssplayer->getFrameNo();;
ssplayer->animePause();
}
else
{
sstest_pause = false;
ssplayer->animeResume();
}
}
sstest_push = true;
}
else if (CheckHitKey(KEY_INPUT_UP))
{
if (sstest_push == false)
{
sstest_count += 20;
if (sstest_count >= animax)
{
sstest_count = 0;
}
}
sstest_push = true;
}
else if (CheckHitKey(KEY_INPUT_DOWN))
{
if (sstest_push == false)
{
sstest_count -= 20;
if (sstest_count < 0)
{
sstest_count = animax - 1;
}
}
sstest_push = true;
}
else if (CheckHitKey(KEY_INPUT_LEFT))
{
if (sstest_push == false)
{
sstest_count--;
if (sstest_count < 0)
{
sstest_count = animax-1;
}
}
sstest_push = true;
}
else if (CheckHitKey(KEY_INPUT_RIGHT))
{
if (sstest_push == false)
{
sstest_count++;
if (sstest_count >= animax)
{
sstest_count = 0;
}
}
sstest_push = true;
}
else
{
sstest_push = false;
}
if (sstest_pause == true)
{
ssplayer->setFrameNo(sstest_count % animax);
}
else
{
sstest_count = ssplayer->getFrameNo();
}
//アニメーションのフレームを表示
sprintf(str, "play:%d frame:%d drawCount:%d", (int)sstest_pause, sstest_count, ssplayer->getDrawSpriteCount());
DrawString(100, 100, str, GetColor(255, 255, 255));
//プレイヤーの更新、引数は前回の更新処理から経過した時間
ssplayer->update(dt);
}
//描画
void draw(void)
{
//プレイヤーの描画
ssplayer->draw();
}
/**
* プレイヤー終了処理
*/
void relese( void )
{
//SS5Playerの削除
delete (ssplayer);
delete (resman);
}
|
Re: Android用DXライブラリでのlive2Dの併用 ( No.4 ) |
- 名前:corner 日時:2018/07/31 19:23
>管理人様
お忙しい中ありがとうございます。
サンプルもありがとうございます。
まだlive2Dの方しか試していないのですが
static Live2DModelOpenGL* live2DModel ;
上記で識別子 "Live2DModelOpenGL" が定義されていません Live2D_test.NativeActivity
というエラーが出て、Live2DModelOpenGL.hが認識されておりません。
一からプロジェクトを作成し直し
・プロパティからプラットフォーム ARM、x86のそれぞれに
2. パッケージの中の include フォルダパスをプロジェクトのプロパティの
『構成プロパティ』→『C/C++』→『全般』の『追加のインクルード ディレクトリ』に追加
3, パッケージの中の lib\android\armeabi フォルダパスをプロジェクトのプロパティの
『構成プロパティ』→『リンカー』→『全般』の『追加のライブラリ ディレクトリ』に追加
を行いすべてのプラットフォームにて
4.『構成プロパティ』→『リンカー』→『入力』の『ライブラリの依存ファイル』に『live2D』を追加
を行いました。
追加の手順で何か間違えていたりしますでしょうか?
自分の方でも少し調査してみようとは思います。
#include "Live2DModelOpenGL.h"
にはエラーは出ておりません。
|
Re: Android用DXライブラリでのlive2Dの併用 ( No.5 ) |
- 名前:Oomimi 日時:2018/07/31 19:46
Live2Dの方ですが、
手順1~6を行って実行したところ
出力は、
1>------ ビルド開始: プロジェクト: Android6.NativeActivity, 構成: Release ARM ------
1>ANDROID_HOME=C:\ProgramData\Microsoft\AndroidSDK\25
1>ANT_HOME=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Apps\apache-ant-1.9.3
1>JAVA_HOME=C:\Program Files\Java\jdk1.8.0_171
1>NDK_ROOT=C:\\Microsoft\AndroidNDK64\android-ndk-r15c
1>main.cpp
1>main.cpp(91,11): warning : unused variable 'h' [-Wunused-variable]
1> float h = live2DModel->getCanvasHeight();
1> ^
1>1 warning generated.
1>C:\\Microsoft\AndroidNDK64\android-ndk-r15c\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: error: cannot find -llive2D
1> undefined reference to 'live2d::Live2D::init(live2d::LDAllocator*)'
1> undefined reference to 'live2d::Live2DModelOpenGL::loadModel(void const*, int)'
1> undefined reference to 'live2d::ALive2DModel::setPremultipliedAlpha(bool)'
1> undefined reference to 'live2d::Live2DModelOpenGL::setTexture(int, unsigned int)'
1> undefined reference to 'live2d::Live2DModelOpenGL::setTexture(int, unsigned int)'
1> undefined reference to 'live2d::Live2DModelOpenGL::setTexture(int, unsigned int)'
1> undefined reference to 'live2d::ALive2DModel::getCanvasWidth()'
1> undefined reference to 'live2d::ALive2DModel::getCanvasHeight()'
1> undefined reference to 'live2d::Live2DModelOpenGL::setMatrix(float*)'
1> undefined reference to 'live2d::ALive2DModel::setParamFloat(char const*, float, float)'
1>clang.exe: error: linker command failed with exit code 1 (use -v to see invocation)
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Application Type\Android\3.0\Android.Common.targets(104,5): error MSB6006: "clang.exe" はコード 1 を伴って終了しました。
1>プロジェクト "Android6.NativeActivity.vcxproj" のビルドが終了しました -- 失敗。
2>------ ビルド開始: プロジェクト: Android6.Packaging, 構成: Release ARM ------
2>ANDROID_HOME=C:\ProgramData\Microsoft\AndroidSDK\25
2>ANT_HOME=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Apps\apache-ant-1.9.3
2>JAVA_HOME=C:\Program Files\Java\jdk1.8.0_171
2>NDK_ROOT=C:\\Microsoft\AndroidNDK64\android-ndk-r15c
2>ANDROID_NDK_HOME=C:\\Microsoft\AndroidNDK64\android-ndk-r15c
2>Buildfile: c:\users\wafuu\Source\Repos\Android6\Android6\Android6.Packaging\ARM\Release\Package\build.xml
2>
2>-set-mode-check:
2>
2>-set-debug-files:
2>
2>-check-env:
2> [checkenv] Android SDK Tools Revision 25.2.5
2> [checkenv] Installed at C:\ProgramData\Microsoft\AndroidSDK\25
2>
2>-setup:
2> [echo] Project Name: Android6.Packaging
2> [gettype] Project Type: Application
2>
2>-set-debug-mode:
2>
2>-debug-obfuscation-check:
2>
2>-pre-build:
2>
2>-build-setup:
2>[getbuildtools] Using latest Build Tools: 25.0.3
2> [echo] Resolving Build Target for Android6.Packaging...
2>[gettarget] Project Target: Android 5.0.1
2>[gettarget] API level: 21
2> [echo] ----------
2> [echo] Creating output directories if needed...
2> [echo] ----------
2> [echo] Resolving Dependencies for Android6.Packaging...
2>[dependency] Library dependencies:
2>[dependency] No Libraries
2>[dependency]
2>[dependency] ------------------
2> [echo] ----------
2> [echo] Building Libraries with 'debug'...
2> [subant] No sub-builds to iterate on
2>
2>-code-gen:
2>[mergemanifest] Found Deleted Target File
2>[mergemanifest] Merging AndroidManifest files into one.
2>[mergemanifest] Manifest merger disabled. Using project manifest only.
2> [echo] hasCode = false. Skipping aidl/renderscript/R.java
2>
2>-pre-compile:
2>
2>-compile:
2> [echo] hasCode = false. Skipping...
2>
2>-post-compile:
2>
2>-obfuscate:
2>
2>-dex:
2> [echo] hasCode = false. Skipping...
2>
2>-crunch:
2> [crunch] Crunching PNG Files in source dir: c:\users\wafuu\Source\Repos\Android6\Android6\Android6.Packaging\ARM\Release\Package\res
2> [crunch] To destination dir: c:\users\wafuu\Source\Repos\Android6\Android6\Android6.Packaging\ARM\Release\Package\bin\res
2> [crunch] Crunched 0 PNG files to update cache
2>
2>-package-resources:
2> [aapt] Found Deleted Target File
2> [aapt] Creating full resource package...
2>
2>-package:
2>[apkbuilder] Found Deleted Target File
2>[apkbuilder] Creating Android6.Packaging-debug-unaligned.apk and signing it with a debug key...
2>
2>-post-package:
2>
2>-do-debug:
2> [zipalign] Running zip align on final apk...
2> [echo] Debug Package: c:\users\wafuu\Source\Repos\Android6\Android6\Android6.Packaging\ARM\Release\Android6.apk
2>[propertyfile] Updating property file: c:\users\wafuu\Source\Repos\Android6\Android6\Android6.Packaging\ARM\Release\Package\bin\build.prop
2>[propertyfile] Updating property file: c:\users\wafuu\Source\Repos\Android6\Android6\Android6.Packaging\ARM\Release\Package\bin\build.prop
2>[propertyfile] Updating property file: c:\users\wafuu\Source\Repos\Android6\Android6\Android6.Packaging\ARM\Release\Package\bin\build.prop
2>[propertyfile] Updating property file: c:\users\wafuu\Source\Repos\Android6\Android6\Android6.Packaging\ARM\Release\Package\bin\build.prop
2>
2>-post-build:
2>
2>debug:
2>
2>BUILD SUCCESSFUL
2>Total time: 1 second
========== ビルド: 1 正常終了、1 失敗、0 更新不要、0 スキップ ==========
となり、失敗してしまいます。
エラー内容は
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー MSB6006 "clang.exe" はコード 1 を伴って終了しました。 Android6.NativeActivity C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Application Type\Android\3.0\Android.Common.targets 104
です。
原因がわからず、ご教授願います。
|
Re: Android用DXライブラリでのlive2Dの併用 ( No.6 ) |
- 名前:Oomimi 日時:2018/07/31 19:49
> cornerさん
>上記で識別子 "Live2DModelOpenGL" が定義されていません Live2D_test.NativeActivity
>というエラーが出て、Live2DModelOpenGL.hが認識されておりません。
Live2D.h内の
#define L2D_TARGET_ANDROID_ES2
のコメントを外すことで"Live2DModelOpenGL"が認識されます。
|
Re: Android用DXライブラリでのlive2Dの併用 ( No.7 ) |
- 名前:corner 日時:2018/07/31 23:58
>Oomimi様
ありがとうございます。
live2Dのヘッダーファイルも見ていたのですが見落としていました・・・・
ありがとうございます。
>管理人様
私の方でも
エラー MSB6006 "clang.exe" はコード 1 を伴って終了しました。
エラー MSB3030 ファイル "D:\live2D\Live2D_test\ARM\Debug\libLive2D_test.so" は見つからなかったためコピーできません。
というエラーが出ました。
実機でのテスト(XperiaZ5)で実行したのでOpenGL系のエラーではないと思います。
Oomimi様と同じくエラーで
1> undefined reference to 'live2d::Live2D::init(live2d::LDAllocator*)'
1> undefined reference to 'live2d::Live2DModelOpenGL::loadModel(void const*, int)'
1> undefined reference to 'live2d::ALive2DModel::setPremultipliedAlpha(bool)'
1> undefined reference to 'live2d::Live2DModelOpenGL::setTexture(int, unsigned int)'
1> undefined reference to 'live2d::Live2DModelOpenGL::setTexture(int, unsigned int)'
1> undefined reference to 'live2d::Live2DModelOpenGL::setTexture(int, unsigned int)'
1> undefined reference to 'live2d::ALive2DModel::getCanvasWidth()'
1> undefined reference to 'live2d::ALive2DModel::getCanvasHeight()'
1> undefined reference to 'live2d::Live2DModelOpenGL::setMatrix(float*)'
1> undefined reference to 'live2d::ALive2DModel::setParamFloat(char const*, float, float)'
h内の関数が取得できていないみたいですね・・・・・
|
Re: Android用DXライブラリでのlive2Dの併用 ( No.8 ) |
- 名前:管理人 日時:2018/08/01 01:54
> 上記で識別子 "Live2DModelOpenGL" が定義されていません Live2D_test.NativeActivity
> というエラーが出て、Live2DModelOpenGL.hが認識されておりません。
すみません、プロジェクトのプロパティの
『構成プロパティ』→『C/C++』→『プリプロセッサ』の『プリプロセッサの定義』に
『L2D_TARGET_ANDROID_ES2』を追加する、という手順についての記述が抜けていました m(_ _;m
> error: cannot find -llive2D
> 1> undefined reference to 'live2d::Live2D::init(live2d::LDAllocator*)'
> 1> undefined reference to 'live2d::Live2DModelOpenGL::loadModel(void const*, int)'
> 1> undefined reference to 'live2d::ALive2DModel::setPremultipliedAlpha(bool)'
> 1> undefined reference to 'live2d::Live2DModelOpenGL::setTexture(int, unsigned int)'
> 1> undefined reference to 'live2d::Live2DModelOpenGL::setTexture(int, unsigned int)'
> 1> undefined reference to 'live2d::Live2DModelOpenGL::setTexture(int, unsigned int)'
> 1> undefined reference to 'live2d::ALive2DModel::getCanvasWidth()'
> 1> undefined reference to 'live2d::ALive2DModel::getCanvasHeight()'
> 1> undefined reference to 'live2d::Live2DModelOpenGL::setMatrix(float*)'
> 1> undefined reference to 'live2d::ALive2DModel::setParamFloat(char const*, float, float)'
うーんおかしいですね…
> 3, パッケージの中の lib\android\armeabi フォルダパスをプロジェクトのプロパティの
> 『構成プロパティ』→『リンカー』→『全般』の『追加のライブラリ ディレクトリ』に追加
こちらですが、間違いなく設定できるように、以下の手順を行ってみていただけますでしょうか?
1. プロジェクトのプロパティダイアログの左上の『構成(C):』を『すべての構成』に変更
2. ダイアログ上部の『プラットフォーム(P):』 を『ARM』に変更
3. 『構成プロパティ』→『リンカー』→『全般』の『追加のライブラリ ディレクトリ』に
パッケージ内の lib\android\armeabi のパスを追加して『適用(A)』ボタンを押す
( 例えばパッケージが C:\Live2D_SDK_OpenGL_2.1.06_1_jp にある場合は C:\Live2D_SDK_OpenGL_2.1.06_1_jp\lib\android\armeabi を追加 )
4. 『構成プロパティ』→『リンカー』→『入力』の『ライブラリの依存ファイル』に『live2d』を追加して『適用(A)』ボタンを押す
5. ダイアログ上部の『プラットフォーム(P):』 を『x86』に変更
6. 『構成プロパティ』→『リンカー』→『全般』の『追加のライブラリ ディレクトリ』に
パッケージ内の lib\android\x86 のパスを追加して『適用(A)』ボタンを押す
( 例えばパッケージが C:\Live2D_SDK_OpenGL_2.1.06_1_jp にある場合は C:\Live2D_SDK_OpenGL_2.1.06_1_jp\lib\android\x86 を追加 )
7. 『構成プロパティ』→『リンカー』→『入力』の『ライブラリの依存ファイル』に『live2d』を追加して『適用(A)』ボタンを押す
|
|