Управление памятью в C ++ работает совершенно иначе, поэтому невозможно использовать директиву библиотеки C ++ в C #.
C ++ использует искажение имени для кодирования сигнатур методов, и это искажение имени нестандартизирован (это зависит от компилятора).Чтобы решить эту проблему, вам необходимо экспортировать их во внешний раздел «C», используя статический «стандартный вызов».
Это означает, что вам нужно создать оболочку со статическими методами для каждого метода экземпляра, используемого в C #.
Из Unity Manual (обратите внимание, что импорт DLL отличается для ios,как показано в коде ниже)
using UnityEngine;
using System.Runtime.InteropServices;
class SomeScript : MonoBehaviour {
#if UNITY_IPHONE
// On iOS plugins are statically linked into
// the executable, so we have to use __Internal as the
// library name.
[DllImport ("__Internal")]
#else
// Other platforms load plugins dynamically, so pass the name
// of the plugin's dynamic library.
[DllImport ("PluginName")]
#endif
private static extern float FooPluginFunction ();
void Awake () {
// Calls the FooPluginFunction inside the plugin
// And prints 5 to the console
print (FooPluginFunction ());
}
}
Вы также можете прочитать этот Unity Answer , для получения дополнительной информации.