[英]64 bit dll in 64 bit process Vista fails - Unable to load DLL 'dllname': The specified module could not be found
我有一个本机C代码,我在vc ++ 2008中编译了该代码,并在配置管理器中以“ x64”作为平台对其进行了编译,还有一个c#应用程序,该应用程序也以“ x64”作为平台进行了编译,它调用了dll函数。 我已经使用Dllimport从dll中调用函数,如下所示。
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");
}
}
}
在运行应用程序时,出现以下错误:
test.exe中发生了'System.DllNotFoundException'类型的未处理异常
附加信息:无法加载DLL“ mydll”:找不到指定的模块。 (来自HRESULT的异常:0x8007007E)
能否请您帮我解决这个问题。 如果我同时运行dll和applicaition,则其工作正常。 但是我需要从我的ASP页面中调用dll函数,因此我需要dll和应用程序均为64位。
其他信息:当我使用64位依赖关系行程序检查dll的依赖关系时,它表明Kernel32.dll和NTDLL.DLL以及mydll.dll是x64。
这个你能帮我吗。
提前致谢,
在x64平台上,SYSWOW64目录包含用于32位应用程序的文件。 您将在注册表中找到相同的区别,其中SYSWOW64包含x32应用程序的条目。 问候
注释:包含32位条目的注册表项是Wow6432Node,位于// HKEY_LOCAL_MACHINE中
问题在于您的dll依赖于其他某个dll,并且无法找到其他dll,因为它位于加载程序无法搜索它的某个路径上,或者该dll不是64位。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.