DllNotFoundException dans unity3d plugin pour dll c++
Je suis en train de travailler sur le Plugin Unity projet et essayez d'importer le c++ dll native de fichier c#.
Mais je continue à recevoir des dllnotfoundexception.
dll c++ code:
extern "C" {
extern __declspec( dllexport ) bool IGP_IsActivated();
}
de code c#:
[DllImport("mydll")]
private static extern bool IGP_IsActivated();
Dll est en place et Fichier.Il existe de fonctionner correctement. Tout dépendant de dll sont présents à la même hiérarchie, mais j'ai quand même dans dllnotfound exception.
Toute aide, beaucoup apprécié!!
le plugin disponible quelque part?
OriginalL'auteur Raj | 2012-04-03
Vous devez vous connecter pour publier un commentaire.
Grâce à cette L'unité post sur le forum je suis venu avec une solution sympa qui modifie la
PATH
-variable d'environnement lors de l'exécution:Project\Assets\Wherever\Works\Best\Plugins
.Placer le constructeur statique dans une classe qui utilise le plugin:
Ajouter
[InitializeOnLoad]
à la classe pour s'assurer que le constructeur est exécuter au lancement de l'éditeur:Avec ce script, il n'est pas nécessaire de copier autour de Dll. L'Unité de l'éditeur trouve dans le
Assets/.../Plugins/...
-dossier et le fichier exécutable trouve dans..._Data/Plugins
-répertoire (où ils obtiennent automatiquement copiés lors de la construction).OriginalL'auteur Lars Bilke
Mettre la DLL(s) de l'Unité des interfaces dans le Projet\Assets\Où\Works\Meilleurs\Plugins.
Place toute dépendance Dll qui ne sont pas directement accessibles par vos scripts dans le Projet. Cela permettra à votre programme à exécuter dans l'éditeur.
Lorsque vous générez, encore une fois la copie de la dépendance fichiers DLL, cette fois à la racine du répertoire de construction (juste à côté de l'exécutable généré). Cela devrait permettre à votre application de charge lors de l'exécution.
(Astuce: vous pouvez utiliser Dependency Walker vous regarder Dll et voir ce qu'ils en dépend.)
OriginalL'auteur sirbrialliance
Bien je l'ai eu à travailler.
Pour les autres, qui peuvent faire face à ce problème, si vous avez plus d'une dll, vous devez mettre le second dll au niveau de la racine de l'Unité de l'éditeur (p. ex. C:\Program Files\Unité\Editor) et référencé dll à partir d'un script dans le dossier plugins.
Cela a fonctionné pour moi.
cela a fonctionné pour moi, m'a sauvé des heures de maux de tête merci les gars pour l'affichage de la question, les réponses et les commentaires!
- Je garder obtenir ceux Exception, même moi, je place le fichier dll dans le répertoire du projet et dans le même dossier que le fichier exécutable après génération. Sont Visual C++ Redistributable-elle nécessaire? - Je construire dll à partir de Visual C++ 2008 SP1 et installé tous les Visual C++ 2008 Redistributable disponible dans le site web de microsoft à toujours obtenir exception dll pas trouvé dans d'autres machine.
J'ai essayé toutes ces solutions pendant des heures... s'est avéré que mon DLL externe est un 32 bits, et mon Unité du projet était de 64 bits. A été prise en
DllNotFoundException
ai donc dirigé vers le bas le chemin de jardin... une autre chose à regarder dehors pour.OriginalL'auteur Raj
J'ai passé une journée avec cette erreur. Mon problème est que Android n'est pas obtenir la bibliothèque et de toujours obtenir et DDLNotFound erreur. Ma solution a été:
1.- Assurez-vous que vous avez les bibliothèques pour la bonne architecture dans le dossier Plugins.
Plugins/Android/x86 et d'Plugins/Android/armeabi-v7a si vos paramètres de génération de matières GRASSES(x86&bras)
2.- Vérifiez que l'Unité reconnaît que les bibliothèques. Si vous sélectionnez dans l'onglet Projet, vous devriez voir comme une bibliothèque et de la plate-forme et de l'architecture.
3.- Après la compilation (ne fermez pas l'Unité de l'Éditeur!), vous pouvez vérifier dans le Temp/StagingArea/libs si vos bibliothèques sont là. Si il y en a là pour s'assurer que les bibliothèques vont être dans l'APK. Comme un double contrôle, vous pouvez ouvrir votre APK (changement d'extension zip) et de voir les bibliothèques dans le dossier lib.
4.- En C#, vous devez supprimer toutes les lib préfixe dans le nom de votre bibliothèque, par exemple:
Si votre nom de la bibliothèque est "libdosomething.donc," vous devriez l'appeler comme
[DllImport ("dosomething")]
J'espère que ce travail pour vous 🙂
Acclamations.
OriginalL'auteur Alexis Barra
Ces fils sont un peu obsolète, mais toujours pertinentes
DLLNotFoundException - Plugin Unity3D
L'unité erreur du compilateur interne avec dll personnalisée
OriginalL'auteur SteakOverflow
il suffit de mettre la dll sous dossier Plugins et qui fonctionne pour moi
OriginalL'auteur fieldChao