Unityのネイティブプラグインを開発しようとしています(Unity 2017.1.0f3とVS 2015を使用しています)。私のネイティブプラグインのターゲットプラットフォームはUWPで、プラグインはC#で書かれています。C#で記述されたネイティブプラグインEntryPointNotFoundException
以下は、Unityのプラグインとスクリプトのコードです。クラス・ライブラリで
プラグインコード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;
}
}
のWindows 10をターゲットユニティスクリプトコード
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
を得ることです:見つけることが はできません。 DLL UnityPluginTestUWP.dll 'SaveSetting'という名前のエントリポイント
コンパイラによる関数名のマングリングのために、これが起こる可能性があることを私はオンラインで読んだ。しかし、これはC++のコードだけでした。私のプラグインはC#で書かれています。
これを克服する助けがあれば歓迎します。
なぜDLLをインポートしたら、C++で記述されたのですか?あなたの資産フォルダにあなたのdllを直接組み込み、それを使ってください。 – joreldraw