2017-03-06 3 views
0

Je veux utiliser mon dll lors de l'exécution par le code (Ne pas mettre la dll à l'actif Plugin) J'écrire ce code ci-dessous:.Utilisation de dll lors de l'exécution dans l'unité

dll Assemblée = Assembly.LoadFrom ("D : \ HaoranZhu \ espace de travail \ UnityProjects \ ViveDRMSDKTest \ Assets \ Plugins \ x86_64 \ vita_api.dll ");

Mais il montre l'erreur ici dans la console Unité:

BadImageFormatException: Impossible de charger le fichier ou l'assembly 'D: \ HaoranZhu \ workspace \ UnityProjects \ ViveDRMSDKTest \ Assets \ Plugins \ x86_64 \ vita_api.dll' ou un de ses dépendances. Une tentative de chargement d'un programme avec un format incorrect a été effectuée. System.Reflection.Assembly.LoadFrom (System.String assemblyFile) (dans /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/Assembly.cs:520) loadExternalDll.Start() (at Assets/TestScripts/loadExternalDll.cs: 16)

Quel est le problème ici?

+0

Etes-vous sûr que vita_api.dll n'a aucune dépendance à d'autres assemblées? Avez-vous essayé d'utiliser le 32 bits à la place? – Maakep

Répondre

0

Vous obtenez cette erreur, car (selon https://msdn.microsoft.com/en-us/library/1009fa28(v=vs.110).aspx):

---- ---- BadImageFormatException
assemblyFile n'est pas un assembly valide; par exemple, un assembly 32 bits dans un processus 64 bits. Voir le sujet d'exception pour plus d'informations.
-ou-
version 2.0 ou ultérieure du Common Language Runtime est actuellement chargée et assemblyFile a été compilé avec une version ultérieure.

---

Cela signifie que soit un vous utilisez un ensemble 32 bits lorsque le processus est de 64 bits, (optez pour une version 64 bits). Ou si vous avez téléchargé une bibliothèque pour une version ultérieure du Common Language Runtime.

+0

ouais je l'ai vu sur le site Web de Microsoft. Une question vraiment étrange est, quand je mets la DLL dans les assets/plugins et dans le script C# en utilisant 'using namespace', ça fonctionne très bien. Mais si je l'utilise par les scripts "Assembly dll = Assembly.LoadFrom (XXX)", il y a juste une erreur. Je ne sais pas pourquoi. – RiTianRan

+0

Eh bien, ils sont essentiellement les seuls moyens que vous pouvez avoir cette erreur. Est-ce que la méthode fonctionne pour tous les autres fichiers DLL? –