Мне удалось загрузить C ++ DLL в Unity с использованием DLLImport
и LoadLibrary
, и я заметил следующее отличие:
LoadLibrary
выбирает путь, которыйозначает, что если вы поместите свою dll в папку плагинов, то при создании приложения LoadLibrary
все равно будет искать dll в папке плагинов, не в Application.dataPath
.
DLLImport[("name")]
предположительно работает так же, но когда вы создаете приложение, оно загружает dll из папки данных приложения, а не из папки плагинов редактора Unity - что является правильным поведением, которое мы хотим.
В обоих случаях dll копируется в папку данных приложения.Каков наилучший способ заставить LoadLibrary
искать dll так же, как DLLImport
?
Согласно Где DLLImport ищет неуправляемые DLL? , я мог бы как-то использоватьфайл манифеста, но неясно, как это сделать.Кроме того, я не могу прибегнуть к использованию #if UNITY_EDITOR
или #if UNITY_STANDALONE_WIN
, потому что я управляю всеми собственными dll в отдельном проекте C # dll (нет доступа к API единства).