Ich bin auf Mac.Wie rufe ich nicht verwaltete Funktionen in C von Unity3d auf, wenn ich kein .bundle habe? (Mac)
Ich habe eine Reihe von c-Quellcode (. C & & .h).
Ich habe eine statische Bibliothek (.a).
Ich möchte diese .a Bibliothek aus Unity verwenden.
Ich schaute in der Unity-Dokumentation für Plug-Ins (http://unity3d.com/support/documentation/Manual/Plugins.html), die für PC und Mac Stand Alones, scheint .bunlde Dateien zu sein einzige Lösung. Alle Beispiel-Plug-in-Projekte, die Unity gibt, haben .bundle-Plugins.
Aber ich habe prime31 Plugins mit .a Bibliothek in Unity gesehen!
Jeder hat eine Ahnung, wie sie das gemacht haben?
Hier ist alles, was ich von der Analyse prime31 Plugin kann sagen:
(1) setzen sie ihre .a Bibliothek im Editor-Ordner des Unity
(2) sie eine C# Skript haben, die eine Menge enthält [ DllImport ("__Internal")]
ich habe versucht, das gleiche zu tun:
(1) ich eine einfache hello_world.c in Xcode geschrieben und eine .a Bibliothek gebaut. Ich legte den libhelloworld.a im Asset/Herausgeber
(2) Ich habe dann ein C# Skript geschrieben, das wie folgt aussieht:
using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;
public class testlib : MonoBehaviour {
[DllImport ("libhelloworld")]
static public extern System.String helloworld();
}
(3) Dann habe ich ein Testskript:
using UnityEngine;
using System.Collections;
public class test : MonoBehaviour {
// Use this for initialization
void Start() {
print(testlib.helloworld());
}
}
(4) Dadurch erhalte ich einen Laufzeitfehler:
DllNotFoundException: libhelloworld
test.Start() (at Assets/Script/test.cs:8)
vielen, vielen dank!
PS: Falls einige von Ihnen sich fragen, warum ich den Quellcode habe, aber nicht das Bündel. Ich versuche ein Bündel aus diesen .c und .h zu bauen, ist aber noch nicht gelungen. Der Quellcode wurde mit make-Tools kompiliert, aber ich weiß nichts anderes, das ein Bündel außer Xcode erstellen könnte. Ich denke, ich muss Xcode verwenden, um mein Bündel zu erstellen. Mein Problem ist, wenn ich versuchte, es mit Xcode zu bauen, bekomme ich Millionen von Fehlern, die sagen, dass ich doppelte Haupteinträge habe. Ich überprüfte den Quellcode und fand heraus, dass es doppelte main() s gibt, weil der Quellcode viele Hilfsprogramme enthält. Ich habe versucht, diese Dienstprogramme zu löschen, aber der gleiche Fehler geht nicht weg ...
Ich plane, diese Frage woanders zu stellen, weil dies nicht sehr Einheit-bezogen scheint. Aber wenn jemand hier die Antwort kennt, zögere bitte nicht - lass es mich wissen!
Funktioniert das in Unity-Indie? –