Я на Mac.
У меня есть куча исходного кода c (.c && .h).
У меня есть статическая библиотека (.a).
Я хочу использовать эту библиотеку .a изнутри Unity.
Я изучил документацию Unity для плагинов (http://unity3d.com/support/documentation/Manual/Plugins.html),, в которой говорится, что для автономных ПК и Mac файлы .bunlde кажутся единственным решением. Все примеры проектов плагинов, которые предоставляет Unity, имеют плагины .bundle.
Но я видел плагины prime31, использующие библиотеку .a в Unity!
Кто-нибудь знает, как они это сделали?
Вот что я могу сказать из анализа плагина prime31:
(1) они помещают свою библиотеку .a в папку редактора Unity
(2) у них есть сценарий C #, который содержит множество [DllImport ("__Internal")]
Я пытался сделать то же самое:
(1) Я написал простой файл hello_world.c в Xcode и создал библиотеку .a. Я помещаю libhelloworld.a в Актив / Редактор
(2) Затем я написал скрипт на C #, который выглядит следующим образом:
using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;
public class testlib : MonoBehaviour {
[DllImport ("libhelloworld")]
static public extern System.String helloworld();
}
(3) Затем я написал тестовый скрипт:
using UnityEngine;
using System.Collections;
public class test : MonoBehaviour {
// Use this for initialization
void Start () {
print(testlib.helloworld());
}
}
(4) При этом я получаю ошибку времени выполнения:
DllNotFoundException: libhelloworld
test.Start () (at Assets/Script/test.cs:8)
Большое, большое спасибо!
PS: В случае, если некоторые из вас задаются вопросом, почему у меня есть исходный код, но нет пакета. Я пытаюсь собрать пакет из этих .c и .h, но пока не получилось. Исходный код был скомпилирован с помощью инструментов make, но я не знаю ничего другого, что могло бы собрать пакет, кроме Xcode. Так что я думаю, что мне нужно использовать Xcode для сборки своего пакета. Моя проблема в том, что когда я пытался создать его с помощью XCode, я получаю миллионы ошибок, говорящих о том, что у меня есть дубликаты основных записей. Я проверил исходный код и обнаружил, что он имеет дубликаты main (), потому что в исходном коде есть много утилит, которые поставляются с ним. Я пытался удалить эти утилиты, но та же ошибка не исчезла ...
Я планирую задать этот вопрос где-нибудь еще, потому что это не похоже на Unity. Но если кто-то здесь знает ответ, пожалуйста, не стесняйтесь - дайте мне знать!