7
votes

Comment faire référence correctement une DLL dans Visual Studio 2010?

J'ai une solution contenant un projet C ++ DLL et un projet C # qui utilisera cette DLL (à l'aide de Pinvoke).

La DLL est en cours de construction sur le dossier x64 / version de mon dossier de solution, ce qui est logique, car le projet C # ne doit pas nécessairement se lancer dans les dossiers du projet DLL.

Je me demande quel serait la bonne façon de le référencer maintenant. En ce moment, le projet DLL est une dépendance du projet C #. Mon intuition m'a dit que cela aurait dû être suffisant, mais le projet C # dit qu'il ne peut pas trouver la DLL.

devrais-je simplement ajouter le fichier .dll comme une référence aussi? Je pensais que cela pourrait fonctionner maintenant, mais casser des choses à long terme lorsque les paramètres de projet peuvent être modifiés.


3 commentaires

Est le code géré C ++ DLL?


@WhozCraig: Il dit qu'il utilise p / invoke - il doit être non géré.


Oui, je viens de voir ça. duh. J'ai vraiment besoin de dormir.


3 Réponses :


2
votes

J'ai déjà répondu à une question similaire. Donc, je ne répète pas le texte ici.

Vous voudrez peut-être jeter un coup d'œil à:


0 commentaires

1
votes

généralement dans de telles situations, je configure ma solution de telle sorte que tous les projets compilent sur $ (solutiondir) bin \ $ (configuration) . Les fichiers binaires sont ensuite situés de la même manière que dans le mode de production et les DLL peuvent être facilement utilisés.

Quant à garder la dernière version de la DLL, rappelez-vous que vous pouvez définir une dépendance, de sorte que si quelque chose change dans la DLL, il sera reconstruit avant de construire votre assemblée / application.

Un autre moyen est d'utiliser des événements de construction (Prebuild et PostBuild) pour copier votre DLL dans le dossier approprié.


0 commentaires

1
votes

Vous ne pouvez pas ajouter une DLL non gérée comme référence dans un projet géré. La DLL doit résider dans le dossier de l'exécutable ou dans n'importe quel autre dossier du chemin du système.

Le meilleur moyen est d'utiliser un "événement de publication" pour que VS copier la DLL soit dans le dossier où il est nécessaire chaque fois qu'il est reconstruit.


0 commentaires