Unity как использовать нативную dll или конвертировать в управляемую - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь использовать нативный компонент UWP c ++ в проекте Unity для hololens.

Я успешно использовал управляемую dll, но не могу понять, как использовать эту нативную dll /

Я хочу либо преобразовать dll в управляемую dll, либо найти какой-нибудь способ использовать нативную dll.

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Управление памятью в 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 , для получения дополнительной информации.

0 голосов
/ 28 мая 2019

Вы пробовали это: Обернуть нативную DLL для C # (2-й блок кода интересен)?

Конвертация dll не возможна. Вы можете преобразовать код c ++ в c #, а затем создать управляемую dll, но импортировать нативный dll будет проще.

РЕДАКТИРОВАТЬ: Следует упомянуть, что я не имею в виду вопрос в частности, только 2-й блок кода, где DLL импортируется.

...