C# importation de dll C++
J'ai réussi fichier dll qui les importations de fonctions à partir d'une dll C++ pour la gestion de l'environnement. Je suis l'aide de certaines de ses fonctions dans mon programme, mais le problème c'est que j'ai cette erreur lorsque j'utilise:
Impossible de charger la DLL 'Libraries\lib.dll': Le module spécifié est introuvable. (Exception de HRESULT: 0x8007007E)
J'ai placé l' .fichier dll dans le répertoire du programme et dans le dossier system32. Toutefois, cela ne fonctionne toujours pas. Je pense que je dois utiliser DLLImport mais je n'ai aucune idée de comment l'utiliser.. même après avoir regardé quelques exemples, je suis encore confus. Quelqu'un peut m'aider ici?
- Plus de détails s'il vous plaît.
- L'esprit de me dire quels sont les détails que vous avez besoin?
- Les noms des Dll. Où ils sont situés. Le DLLImport déclaration.
- un peu de code pourrait l'aider.
- Ainsi, c'est pourquoi je veux voir le DLLimport déclaration.
- Heffernan, mon premier commentaire était destiné à l'op
- Le problème est que je n'ai pas de DLLImport code, ni je ne, de comprendre comment il fonctionne et c'est pourquoi j'ai demandé ici. Aussi, le nom de l' .le fichier dll est lib.dll et je l'ai placé dans le répertoire du programme/dossier system 32 et plusieurs autres dossiers, mais j'ai toujours cette erreur.
Vous devez vous connecter pour publier un commentaire.
Vous dire:
Mais:
Nous avons besoin de voir votre
DLLImport
attribut de la création, c'est à dire, le C# de la signature de la méthode native. Il me semble que vous avez probablement spécifier le chemin d'accès, c'est à dire,Essayez d'utiliser ceci à la place:
Que la recherche dans le répertoire d'exécution ainsi que par le biais de votre
PATH
variable d'environnement. Si vous spécifiez un chemin d'accès au fichier que vous n'avez honnêtement, je ne sais pas si il sera à la recherche par le biais dePATH
si le fichier n'est pas trouvé (je n'ai pas trouvé mention de cela dans les docs).Il n'y a pas assez d'informations ici pour vous aider, comme vous n'êtes pas en montrant l'API (en code natif) que vous tentez d'importer, etc.
Cela étant dit, je voudrais vous recommandons fortement de lire le Appel De Plate-Forme De Tutoriel ainsi que Un Oeil de plus près à l'appel de Plate-forme sur MSDN. Ils marchent à travers les principales questions, ainsi que de montrer de nombreux exemples de la façon d'importer et d'utiliser les fonctions d'une DLL C++.
Si vous êtes sûr des exportations (utiliser dépendance walker à vérifier) et que vous avez correctement mappé en utilisant les bons PInvoke appels, votre question pourrait être 32/64 bits, surtout si vous êtes sur un OS 64 bits avec une .NET application définie à n'Importe quel PROCESSEUR.
Un 32 bits natif DLL ne peut être chargé par un 32 bits .NET lors de l'utilisation de PInvoke (la même chose s'applique à 64 bits natif Dll).
Vous pouvez modifier la plate-forme cible à l'aide de Propriétés->Build->Plate-forme cible ou vous pouvez utiliser le CorFlags utilitaire.