2009-01-23 4 views
2

J'utilise VS 2008 pour développer une application qui utilise un fichier .dll avec P/Invoke. Je peux utiliser avec succès la DLL lorsque j'utilise un chemin absolu. Par exemple, cela fonctionne:Chemin d'accès relatif à la DLL dans la plate-forme Invoke Statement

[DllImport ("C: \\ myDLL.dll")] interne statique extern bool isReady();

cela ne fonctionne pas:

[DllImport ("MYDLL.DLL")] statique interne extern bool isReady();

J'ai essayé d'ajouter un dossier de référence et d'ajouter la DLL dans le dossier du projet, mais aucun ne fonctionne. J'ai besoin de déployer cette application sur d'autres ordinateurs et je dois m'assurer que ce fichier .dll est inclus. Merci pour l'aide!


j'oublié de mentionner quand j'essaie de faire que je reçois cette erreur:

Microsoft Visual Studio Une référence à « C: \ Users \ dlugokja \ Documents \ Visual Studio 2008 \ Projects \ DinamapN .sln (1) \ DinamapN \ DinamapN \ DinaWin.dll 'n'a pas pu être ajouté. Assurez-vous que le fichier est accessible et qu'il s'agit d'un assembly ou d'un composant COM valide. OK

+0

Lorsque vous placez un chemin dans votre code, utilisez la syntaxe @ "C: \ dossier \ myDLL.dll" de cette façon que vous n'avez pas besoin de utiliser des doubles barres obliques – TravisO

Répondre

4

La solution que nous utilisons au travail est la suivante:

  1. Ajouter la DLL à votre projet
  2. Modifier les propriétés de la DLL d'être « contenu » et «Toujours copier de
  3. Référence du DLL dans vos instructions P/Invoke comme @ "mydll.dll"
+0

sympa :) a fait l'affaire! – 1Mayur

-2

Pourquoi ne pas simplement cliquer avec le bouton droit de la souris sur le fichier de projet "Ajouter une référence" et naviguer jusqu'à la DLL?

+3

Parce que ce n'est pas une gestion ou C OM DLL. – user7116

+2

Où est-ce que ça veut dire dans la question ??? –

+3

Il utilise P/Invoke, qui n'est pas un COM PIA ou un moyen d'appeler des assemblages gérés. – user7116

Questions connexes