我有一个原生的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和应用程序它的工作正常。但我需要从我的ASP页面调用dll函数,所以我需要dll和应用程序作为64位。
附加信息:当我使用依赖性walker检查64位依赖dll它显示Kernel32.dll和NTDLL.DLL以及mydll.dll是x64。
请帮我解决这个问题。
先谢谢,
答案 0 :(得分:3)
在x64平台上,SYSWOW64目录包含32位应用程序的文件。 您将在注册表中找到相同的区别,其中SYSWOW64包含x32应用程序的条目。 问候
注释:包含32位条目的注册表项是Wow6432Node并位于// HKEY_LOCAL_MACHINE
答案 1 :(得分:0)
问题是你的dll依赖于其他一些dll而且其他dll无法定位,因为它位于加载器不搜索它或dll不是64位的某个路径上。