2010-07-20 9 views
3

J'ai un projet C# que j'ai créé dans Visual Studio Express 2010. Ce programme utilise une classe C# tierce qui repose sur/appelle une DLL C++. Je viens de copier le fichier filename.dll dans les dossiers bin/debug et bin/release du dossier du projet, et l'application s'est bien déroulée.C# project 2010, exécutable autonome sur un autre ordinateur

Je suis sous l'hypothèse que je peux copier la version exécutable du projet sur un autre ordinateur et l'exécuter tant que filename.dll est dans le même répertoire que l'exécutable. Cependant, en essayant ceci sur un autre ordinateur avec les armatures correctes installées, etc. le programme se bloque avec une exception system.dllnotfoundexception. Bizarrement, mon ami rapporte que le programme tourne sur son ordinateur avec Visual Studio installé, mais pas avec celui-ci, bien que je ne l'ai pas vu.

Ce qui pourrait être la cause? Et comment puis-je faire fonctionner l'exécutable de la version sur une autre machine?

Merci pour les réponses! -Chase

+1

Vérifiez si des messages d'erreur utiles –

Répondre

1

Si votre C++ dll est construit par le studio visuel, il peut dépend du CRT, deux choses à vérifier ici:

  • Si cela dépend de la libération ou CRT debug. Microsoft ne vous donne pas le droit de distribuer la version de débogage sauf à des fins de débogage, ce qui peut poser problème.
  • Version Sorcière il dépend
    • La dernière version de VS2010 peut être copié dans le même répertoire que l'exécutable (msvcp100.dll pour C++ msvcr100.dll pour C)
    • Les versions précédentes devaient être installées en tant qu'assemblages côte à côte, leur exécution était donc obligatoire (certaines versions comme la VS2005 sont incluses dans l'installation du framework mais d'autres comme le VS2005 SP1 doivent être installées séparément)

En tout cas, la meilleure façon de déboguer ces problèmes est d'installer Dependency Walker (gratuit) sur l'ordinateur ayant des problèmes et laissez-vous dire ce que dll manque.

4

Assurez-vous que l'environnement d'exécution Visual C++ est installé (VS2005, VS2008, VS2010).

0

La solution la plus simple (mais peut-être pas la meilleure) à ce problème consiste à ajouter un projet d'installation à votre solution. Un projet d'installation vous aidera à trouver les dépendances et les rendra disponibles pendant l'installation.

Les étapes que vous devez prendre sont les suivantes:

  1. Ajouter un projet d'installation à votre solution (qui se trouve dans le projet Ajouter .../modèles de configuration)
  2. Cliquez droit sur le projet, choisissez " Ajouter/Sortie du projet ... "et ajouter le projet de démarrage de votre programme.
  3. Cliquez avec le bouton droit sur le projet et choisissez "Afficher/Actions personnalisées".
  4. Cliquez avec le bouton droit de la souris sur le nœud racine, sélectionnez "Ajouter une action personnalisée ..." et dans "Dossier d'application" ajoutez "Sortie primaire de [nom de votre projet ici]".

Maintenant, lorsque vous compilez, un programme d'installation .msi est créé. Exécutez ce programme d'installation sur l'autre ordinateur et votre programme sera installé et exécutable. Pour désinstaller, réexécutez le programme d'installation ou supprimez le programme de "Ajout/Suppression de programmes" sous Panneau de configuration.

Questions connexes