2009-06-04 3 views
0

J'ai un code C natif, j'ai compilé le code dans vC++ 2008 et son compilé avec 'x64' comme plate-forme dans le gestionnaire de configuration et j'ai une application C# qui est également compilée avec 'x64' comme plateforme et appelle la fonction dll. J'ai utilisé Dllimport pour appeler la fonction de la DLL comme ci-dessous.64 bits dll dans le processus 64 bits Vista échoue - Impossible de charger la DLL 'dllname': Le module spécifié est introuvable

using System.Runtime.InteropServices; 

namespace test    
{  
public partial class Form1 : Form              
    { 

     [DllImport("mtest", CharSet = CharSet.Ansi)] 
     public extern static void e_path(string path); 

     public Form1() 
     { 
      InitializeComponent(); 
     } 
     private void button1_Click(object sender, EventArgs e) 
     { 
      MessageBox.Show("test"); 
      swe_set_ephe_path("E:\\Gan"); 
     } 
    } 
} 

au moment de l'exécution de l'application que je reçois l'erreur comme ci-dessous:

Une exception non gérée du type « System.DllNotFoundException » a eu lieu dans test.exe

Informations complémentaires: Impossible de load DLL 'mydll': Le module spécifié est introuvable. (Exception de HRESULT: 0x8007007E)

Pourriez-vous s'il vous plaît m'aider à résoudre ce problème. Si je cours à la fois la DLL et l'applicaition fonctionne très bien. Mais j'ai besoin que les fonctions dll soient appelées à partir de mes pages ASP, j'ai donc besoin à la fois de la DLL et de l'application en 64 bits.

AUTRES INFORMATIONS: quand je suis le dll pour la dépendance à l'aide marcheur de dépendance pour 64 bits Il montre que le Kernel32.dll et NTDLL.DLL et mydll.dll est x64.

aidez-moi s'il vous plaît avec ceci.

Merci à l'avance,

+0

Pouvez-vous expliquer ce que vous voulez dire quand vous dites « Si je cours à la fois la dll et applicaition son fonctionne bien. » [sic] –

+0

Je veux dire que si la DLL est de 32 bits et que l'application fonctionne sous plate-forme x86, elle fonctionne correctement. –

+0

Je vous suggère d'essayer ProcessMonitor - http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx - pour voir ce qui ne va pas. Il vous montrera toutes les tentatives pour charger les bibliothèques et les dépendances correctives et vous conduira probablement à la solution. – sharptooth

Répondre

0

Le problème est que votre dll dépend d'un autre dll et que d'autres dll ne peut pas être situé car il est sur une voie où le chargeur ne recherche pas ou que dll n'est pas 64 bits.

+0

quand j'ai vérifié la DLL pour la dépendance en utilisant le dépendant de la dépendance 64 bits Il montre que le Kernel32.dll et NTDLL.DLL et mydll.dll est x64. –

3

Sur les plates-formes x64, le répertoire SYSWOW64 contient des fichiers pour les applications 32 bits. Vous trouverez la même différenciation dans le registre, où SYSWOW64 contient des entrées pour les applications x32. Salutations

Commentaire: La clé de Registre contenant des entrées de 32 bits est Wow6432Node et réside dans // HKEY_LOCAL_MACHINE

+0

Cela m'a aidé avec un autre problème. Merci d'avoir posté cela. – tronious

Questions connexes