Unityでネイティブプラグインの読み込みに失敗してしまう
当方プログラミング初心者です。
以下のサイトを参考にし、
UnityにおいてObjective-Cで作成したプラグインを読み込もうとしました。
(http://tatsudoya.blog.fc2.com/blog-entry-237.html)
しかし、各コードに間違いは見当たらず、ユニバーサルバイナリとしてビルドし、Assets/Plugins下に入れているにも関わらず、エディターでの実行に以下のエラーメッセージが発生してしまいました。
DllNotFoundException: UnityPluginSample Plugin.Start () (at Assets/Plugin.cs:18)
こちらが実際のソースコードです。
objectivec
1 2// UnityPluginSample.m 3// UnityPluginSample 4 5#import <Foundation/Foundation.h> 6 7void SampleFunction() { 8 printf("test."); 9} 10 11const char* SampleFunction2() { 12 const char *str = "test2."; 13 char* retStr = (char*)malloc(strlen(str) + 1); 14 strcpy(retStr, str); 15 return retStr; 16} 17
header
1 2 3// UnityPluginSample.h 4// UnityPluginSample 5 6 7#ifndef UnityPluginSample_h 8#define UnityPluginSample_h 9 10 11#endif /* UnityPluginSample_h */ 12 13extern "C" { 14 void SampleFunction(); 15} 16 17extern "C" { 18 const char* SampleFunction2(); 19} 20
これらは問題なくビルドできたのでPluginsフォルダに入れました。
そして、Unityで以下のスクリプトをアタッチしました。
Visual Studioで確認したところコードの誤りは見受けられませんでしたが、実行時に上記のエラーが発生してしまいました。
c#
1 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5using System.Runtime.InteropServices; 6 7public class Plugin : MonoBehaviour 8{ 9 [DllImport("UnityPluginSample")] 10 private static extern void SampleFunction(); 11 12 [DllImport("UnityPluginSample")] 13 private static extern string SampleFunction2(); 14 15 // Use this for initialization 16 void Start() 17 { 18 Debug.Log("[Start] Start()"); 19 SampleFunction(); 20 Debug.Log("GetString : " + SampleFunction2()); 21 Debug.Log("[End ] Start()"); 22 } 23 24} 25
冒頭で述べたことに加えて
・Unityのインポート設定からEditorを外す
・再起動
なども試してみましたが、結果は変わりませんでした。
解決方法がありましたら、ご助言お願いします。
環境
実装プラットフォーム:MacOSX(Standealone)
Xcode9.3
Unity2019.1.8f1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/01 07:28
2019/11/01 07:50 編集
2019/11/03 02:58