【发布时间】:2009-06-04 07:04:26
【问题描述】:
我有一个本机 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 位的。
附加信息:当我使用 64 位的依赖遍历器检查 dll 的依赖关系时,它显示 Kernel32.dll 和 NTDLL.DLL 和 mydll.dll 是 x64。
请帮帮我。
提前致谢,
【问题讨论】:
-
你能解释一下当你说“如果我同时运行 dll 和应用程序它工作正常”时你的意思。 [原文]
-
我的意思是如果 dll 是 32 位的并且我在 x86 平台下运行的应用程序可以正常工作。
-
我建议你试试 ProcessMonitor - technet.microsoft.com/en-us/sysinternals/bb896645.aspx - 看看到底出了什么问题。它将向您展示加载库和相应依赖项的所有尝试,并可能引导您找到解决方案。
标签: c# c++ visual-studio-2008 visual-c++ dll