2010-01-13 4 views
4

J'ai une simple DLL C (pas COM). J'ai aussi une application C# 2.0 qui l'exécute (dllimport). La DLL est placée dans l'exe de l'application. Je sais que la DLL est ok et aussi que mon application qui l'appelle succès le lire, mais quand je les déplace vers un autre ordinateur, il dit qu'il peut charger la DLL.La DLL C ne se charge pas en C#

L'erreur: "Impossible de charger le DLL nom.dll Cette application n'a pas pu démarrer car la configuration de l'application est incorrecte." J'ai utilisé Visual Studio 2005 pour créer la dll. L'ordinateur targer est un ordinateur côte à côte. Lorsque j'ai pris le dossier de la côte à côte contient le CRT, il n'a pas fonctionné. Merci

+1

Recevez-vous un message d'erreur ou une exception? Que dit-il exactement? – mdm

+0

"Impossible de charger la DLL nom.dll Cette application n'a pas pu démarrer car la configuration de l'application est incorrecte." –

+0

Vous devriez changer le titre en "C DLL ne charge pas en C#". Je pensais que vous essayiez de charger une DLL C# en C! –

Répondre

0

J'ai beaucoup utilisé les commentaires que les gens ont écrits et ils ont raison. J'ai utilisé: l'outil Dependency Walker et le moniteur de processus et l'explorateur de processus. J'ai eu un problème de ne pas détecter le bon msvr80 à l'exécution par mon application. J'ai instaalled destributable paquet de VC++ amd n'a pas aidé. L'answear était dans une autre discussion ici et il Side-by-side configuration error (Microsoft.VC80.CRT v8.0.50608.0) C'était un problème de mise à jour de sécurité: Microsoft.VC80.CRT v8.0.50727.4053 (Installé via une mise à jour de sécurité).

4

La DLL C peut avoir diverses dépendances. Essayez d'utiliser l'outil Dependency Walker pour déterminer s'il y en a.

+0

J'ai utilisé le déambulateur de dépendance et j'ai trouvé que la DLL dépend. J'ai utilisé Visual Studio 2005 pour créer la DLL. L'ordinateur targer est un ordinateur côte à côte. Lorsque j'ai pris le dossier de la côte à côte contient le CRT, il n'a pas fonctionné. Merci –

2

Windows a peut-être détecté un problème de configuration de version côte-à-côte avec votre application. Par exemple, le fichier DLL est généralement compilé avec une version particulière de la bibliothèque d'exécution de Microsoft C, qui peut ne pas être installée sur votre deuxième ordinateur. Il ne doit pas non plus être la bibliothèque d'exécution C, il peut s'agir d'une autre bibliothèque.

Comment le diagnostiquer?

Découvrez cet article, http://blogs.msdn.com/junfeng/archive/2006/04/14/576314.aspx pour un point de départ, mais pas de garanties.

+0

J'ai utilisé Visual Studio 2005 pour créer la DLL. L'ordinateur targer est un ordinateur côte à côte. Lorsque j'ai pris le dossier de la côte à côte contient le CRT, il n'a pas fonctionné. Merci –