ユーザ用ツール

サイト用ツール

wiki:unity:tips:087

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

次のリビジョン
前のリビジョン
wiki:unity:tips:087 [2014/11/13 11:48]
127.0.0.1 外部編集
— (現在)
ライン 1: ライン 1:
-====== 087 ndk-buildで生成したライブラリを利用する ====== 
  
-===== ライブラリの作成 ===== 
-  * Visual Studio 2010を起動します。 
-  * ファイル -> 新規作成 -> プロジェクト と選択します。 
-  * Win32 コンソールアプリケーション を選択し、プロジェクト名を「DLLImport_VS」とします。 
-  * アプリケーションの種類をDLLにチェックを入れて、追加のオプションは「空のプロジェクト」に変えて完了します。 
-  * ソースファイルを追加します。(plugin.cpp/​h) 
- 
-<code c> 
-// plugin.h 
-extern "​C"​ 
-{ 
- int Hoge(); 
-} 
-</​code>​ 
- 
-<code c> 
-// plugin.cpp 
-#include "​plugin.h"​ 
- 
-int Hoge() 
-{ 
- return 999; 
-} 
-</​code>​ 
- 
-ここで一度VisualStudioでビルドしてエラーが出ないか確認します。エラーが出なければAndroid用にndk-buildします。ndk-build用のAndroid.mk ファイルを用意します。 
- 
-<​code>​ 
-include $(CLEAR_VARS) 
- 
-# override strip command to strip all symbols from output library; no need to ship with those.. 
-cmd-strip = $(TOOLCHAIN_PREFIX)strip $1  
- 
-LOCAL_ARM_MODE ​ := arm 
-LOCAL_PATH  ​ := $(NDK_PROJECT_PATH)/​jni 
-LOCAL_MODULE :​= libjni 
-LOCAL_CFLAGS :​= -Werror 
- 
-LOCAL_SRC_FILES := jni.cpp 
-LOCAL_SRC_FILES += ../​plugin.cpp 
- 
-LOCAL_LDLIBS :​= -llog 
- 
-include $(BUILD_SHARED_LIBRARY) 
-</​code>​ 
-plugin.cpp がlibjniに含まれる様にします。 
-ndk-buildでエラーが出なければ.soファイルが生成されます。 
- 
-===== Unity側にプラグインを呼び出すクラスを用意する ===== 
-  * Unity を起動し、新規プロジェクトを作成します。名前はDLLImport とします。 
-  * Project のAssetsにPlugins -> Android フォルダを作成します。 
-  * Androidフォルダに、soファイルが含まれているlibsフォルダ毎ドラッグ&ドロップします。 
-{{:​wiki:​unity:​tips:​unity_native_plugin_cpp_001.png?​300|}} 
- 
- 
-  * プラグインを利用するためのスクリプトをPluginsフォルダに追加します。 
- 
-<code csharp> 
-using UnityEngine;​ 
-using System.Collections;​ 
-using System.Runtime.InteropServices;​ 
-using System; 
- 
-public class JNI 
-{ 
- [DllImport ("​jni"​)] public static extern int Hoge(); 
-} 
-</​code>​ 
-これで呼び出せる様になりました。任意の場所からJNI.Hoge() とすれば999 と値が返ってきます。 
-{{:​wiki:​unity:​tips:​unity_native_plugin_cpp_002.png?​300|}} 
- 
- 
-実行時にEntryPointNotFoundException エラーがが出てしまう場合は関数の実態を見つけられずにいます。例えば以下の場合は関数が見つけられずエラーが出ます。 
- 
-<code c> 
-extern "​C"​ 
-{ 
- static int Hoge(); 
-} 
-</​code>​ 
- 
-<code c> 
-#include "​plugin.h"​ 
-static int Hoge() 
-{ 
- return 999; 
-} 
-</​code>​ 
-static 宣言が余計に付いてます。 
Permalink wiki/unity/tips/087.1415879302.txt.gz · 最終更新: 2015/01/06 14:17 (外部編集)

oeffentlich