在64位过程中的64位DLL Vista失败 - 无法加载DLL'dllname':无法找到指定的模块
问题描述:
我有一个本机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。
请帮我解决这个问题。
由于事先
答
的问题是,您的DLL依赖于一些其他的DLL和其他DLL无法定位,因为它是在加载程序不会进行搜索或DLL一些道路上不是64位。
答
在x64平台上,SYSWOW64目录包含32位应用程序的文件。 您可以在注册表中找到相同的区别,其中SYSWOW64包含x32应用程序的条目。 问候
点评:含32位项中的注册表项是Wow6432Node和位于// HKEY_LOCAL_MACHINE
你能解释一下你的意思是当你说:“如果我同时运行DLL和applicaition其工作的罚款。” [原文如此] – 2009-06-04 07:08:36
我的意思是如果DLL是32位的,我在x86平台下运行的应用程序工作正常。 – 2009-06-04 07:15:06
我建议你尝试ProcessMonitor - http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx - 看看究竟出了什么问题。它会向您显示加载库和对应依赖关系的所有尝试,并可能将您引导至解决方案。 – sharptooth 2009-06-04 09:08:49