Unity 用のネイティブ プラグインを開発しようとしています (Unity 2017.1.0f3 および VS 2015 を使用)。私のネイティブ プラグインのターゲット プラットフォームは UWP で、プラグインは C# で記述されています。
以下は、プラグインのコードと Unity のスクリプトです。
Windows 10 14393 を対象とするクラス ライブラリのプラグイン コード
public static class SettingsService
{
public static string GetSetting( string key )
{
var localSettings = ApplicationData.Current.LocalSettings;
try
{
var stringvalue = localSettings.Values[key] as string;
return stringvalue;
}
catch ( ArgumentNullException en )
{
return default( string );
}
}
public static void SaveSetting( string key, string value )
{
var localSettings = ApplicationData.Current.LocalSettings;
localSettings.Values[key] = value;
}
}
Unity スクリプト コード
public class TestNativePlugin : MonoBehaviour {
[DllImport( "UnityPluginTestUWP", EntryPoint = "GetSetting" )]
private static extern string GetSetting( string key );
[DllImport( "UnityPluginTestUWP", EntryPoint = "SaveSetting" )]
private static extern void SaveSetting( string key, string value );
// Use this for initialization
void Start () {
SaveSetting( "setting", "oeoeoe" );
System.Diagnostics.Debug.WriteLine( GetSetting( "setting" ) );
}
}
問題は、実行時に次EntryPointNotFoundException
のメッセージが表示されることです:
Unable to find an entry point named 'SaveSetting' in DLL UnityPluginTestUWP.dll'
これは、コンパイラによる関数名のマングリングが原因で発生する可能性があることをオンラインで読みました。しかし、これは C++ コードのみでした。私のプラグインは C# で書かれています。
これを克服するための助けは大歓迎です。