Je veux importer un fichier DLL dans mon projet de site Web. J'ai dll fichier "my.dll" dans le dossier C: \ dlldrir et j'utilise le code: Cela fonctionne bien. Mais je veux utiliser un chemin relatif (chemin racine de site Web). J'essaie de mettre "my.dll" dans "bin" ou dossier racine et j'utilise le code: p> mais je reçois l'erreur: impossible charger dll 'my.dll': le module spécifié n'a pas pu être trouvé. (Exception de HRESULT: 0x8007007E) P> Des idées? P> P>
4 Réponses :
soit vous n'avez pas copié mon fichier bin où il devrait être chargé. Utilisation de Process Explorer ( http://technet.microsoft.com/en-us/sysinternals /bbb89665.cox ) Willley Show où il essaie de charger ce fichier. P>
Edit: Merci à Volpav pour vous rappeler qu'il est non géré DLL - Ignorer la partie mangée ... ... L'assemblée a des autres dépendances. Découvrez http://blogs.msdn.com/b /suzcook/archive/2003/05/29/57120.aspx qui détaille l'enquête de ces échecs (recherche du journal de fussion de la charge de l'assemblage "pour plus de liens). P>
Je crois que cela n'a rien à voir avec la fusion car sa dll non gérée.
Je crois que la DLL doit être sur votre chemin (sinon absolu). Et qu'est-ce qui va probablement vous surprendre, c'est que CWD n'est pas sur votre chemin à moins que vous ajoutez spécifiquement "". dans votre variable de chemin. p>
Je pense que vous voudrez peut-être vérifier la question suivante pour la question (puisqu'elle est liée à votre cas): P>
Dllimport n'a pas réussi à localiser la DLL Même si c'est dans le chemin p>
Au fur et à mesure que d'autres personnes a suggéré, cochez la variable Regardez cette MSDN Forum Post également (on dirait qu'il y avait un problème avec des dépendances). P>
Si c'est une DLL COM, vous importation, il peut également nécessiter d'être enregistré d'abord sur une machine cible (bien que je ne sois pas sûr si cela est nécessaire). En savoir plus ici . P> chemin code> pour vous assurer que
c: \ dlldrir \ code> est là. Vous pouvez en savoir plus sur la manière de configurer vos variables d'environnement ici . p>
aller à Propriétés / Build Code> onglet et définissez la cible de la plate-forme sur
x86 code>. p>
Je pense que cela veut la voie absolue à la DLL. Serveur.mappath devrait faire le tour pour vous
Server.Mappath vous donne les chemins par rapport à votre lieu de répertoire Web. Donc, si vous avez déjà le chemin absolu, cela ne fera aucune différence.
Mais Server.Mappath permettra à OP d'utiliser un chemin relatif de la DLL, mais de passer une voie absolue à Dllimport.
Eggheadcafe.com/software/aspnet/33238643/... Vous pouvez mettre votre DLL à System32 ou votre variable de chemin
My.dll a-t-il des dépendances? Si oui, avez-vous copié ces dépendances sur le répertoire bin sites Web aussi?
@Aaron les mettre dans la poubelle ne fonctionne pas. Le problème est qu'il a besoin de placer la DLL non gérée dans C: \ Windows \ Microsoft.net \ Framework \ V2.0.50727 \ Fichiers temporaires ASP.NET \ XXXX. Il n'y a pas de moyen facile de le faire car le chemin est généré de manière dynamique. Le moyen le plus simple consiste simplement à placer la DLL dans un chemin connu ou à mettre à jour la variable du chemin
@HARVEY - Je ne suis pas un gourou interop en quelque sorte cependant, j'ai créé une application Web C # et une DLL simple C ++ avec une fonction exportée. J'ai copié la DLL C ++ dans le répertoire des applications Web et je suis capable d'appeler la fonction exportée simplement en utilisant Dllimport sans passer à l'aide du chemin complet ou de la mise à jour de la variable d'environnement de chemin.