ユーザ用ツール

サイト用ツール

wiki:unity:tips:087

差分

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

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

次のリビジョン
前のリビジョン
wiki:unity:tips:087 [2014/11/13 11:48]
127.0.0.1 外部編集
wiki:unity:tips:087 [2015/02/23 12:46] (現在)
ライン 1: ライン 1:
-====== 087 ndk-buildで生成したライブラリを利用する ====== +[[http://stepism.sakura.ne.jp/unity/wiki/|Unityはこちら動しました。]]
- +
-===== ライブラリの作成 ===== +
-  * Visual Studio 2010を起動します。 +
-  * ファイル -> 新規作成 -> プロジェクト と選択します。 +
-  * Win32 コンソールアプリケーション を選択し、プロジェクト名を「DLLImport_VS」とします。 +
-  * アプリケーションの種類をDLLにチェックを入れて、追加のオプションは「空のプロジェクト」に変えて完了します。 +
-  * ソースファイルを追加します。(plugin.cpp/h) +
- +
-<code c> +
-// plugin.+
-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