2009-06-04 81 views
0

我有一個本機C代碼,我在vC++ 2008中編譯代碼,並用'x64'編譯爲平臺在配置管理器,我有一個C#應用程序,它也編譯爲'x64'作爲平臺,它調用dll函數。我用Dllimport從下面的dll調用函數。在64位過程中的64位DLL Vista失敗 - 無法加載DLL'dllname':無法找到指定的模塊

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"); 
     } 
    } 
} 

在運行該應用程序我得到如下錯誤的時間:

型「System.DllNotFoundException」未處理的異常發生在test.exe的

其他信息:無法加載DLL'mydll':指定的模塊找不到。 (來自HRESULT的異常:0x8007007E)

請問你能否幫我解決這個問題。如果我運行的DLL和應用程序的工作正常。但我需要從我的ASP頁面調用DLL函數,所以我需要DLL和64位應用程序。

其他信息:當我使用64位依賴walker檢查dll的依賴關係它顯示Kernel32.dll和NTDLL.DLL和mydll.dll是x64。

請幫我解決這個問題。

由於事先

+0

你能解釋一下你的意思是當你說:「如果我同時運行DLL和applicaition其工作的罰款。」 [原文如此] – 2009-06-04 07:08:36

+0

我的意思是如果DLL是32位的,我在x86平臺下運行的應用程序工作正常。 – 2009-06-04 07:15:06

+0

我建議你嘗試ProcessMonitor - http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx - 看看究竟出了什麼問題。它會向您顯示加載庫和對應依賴關係的所有嘗試,並可能將您引導至解決方案。 – sharptooth 2009-06-04 09:08:49

回答

0

的問題是,您的DLL依賴於一些其他的DLL和其他DLL無法定位,因爲它是在加載程序不會進行搜索或DLL一些道路上不是64位。

3

在x64平臺上,SYSWOW64目錄包含32位應用程序的文件。 您可以在註冊表中找到相同的區別,其中SYSWOW64包含x32應用程序的條目。 問候

點評:含32位項中的註冊表項是Wow6432Node和位於// HKEY_LOCAL_MACHINE

相關問題