ASP.NET网站如何调用动态链接库DLL
集成环境:vs2008(中文)
项目类型:asp.net网站
问题描述:
首先我建了一个Win32 Dynamic-Link Library”工程
内容很简单,在唯一的Count.cpp文件中定义count方法返回a+b的值,代码如下:
extern "C" _declspec(dllexport)double _stdcall count(double a, double b);
double _stdcall count(double a, double b)
{
return a+b;
}
编译后产生了Count.dll及Count.lib文件
在asp.net网站中我想要实现的内容是,当Click页面上的Button,调用count方法返回计算结果
请问在Default.aspx.cs中应该写?
描述补充:
我在网上找过很多关于调用的方法,以下方法没有成功
尝试方法一:
将Count.dll及Count.lib文件拷贝到网站项目的Bin文件夹下面,
在“网站”标签下选择“添加引用”,在“添加引用”对话框中的“浏览”选项卡中找到Count.dll文件
结果跳出错误信息:未能添加对“G:\...\Count.dll”的引用,在组件中找不到类型库
尝试方法二:
public partial class _Default : System.Web.UI.Page
{
[DllImport("Count.dll",EntryPoint = "count")]
static extern double count(double a, double b);
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "" + count(2,3);
}
}
结果在click按钮之后浏览器跳至 异常信息提示页面,内容如下
“/WebSite3”应用程序中的服务器错误。
--------------------------------------------
无法加载 DLL“Count.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
说明: 执行当前 Web 请求期间,出现未处理的异常。
请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.DllNotFoundException: 无法加载 DLL“Count.dll”: 找不到指定的模块。
但是这个方法,如果是调用系统的动态链接库是可以的!例如
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[DllImport("user32.dll", EntryPoint = "MessageBoxA")]
static extern int MsgBox(int hWnd, string msg, string caption, int type);
protected void Button1_Click(object sender, EventArgs e)
{
MsgBox(0, " 这就是用 DllImport 调用 DLL 弹出的提示框哦! ", " 挑战杯 ", 0x30);
}
}
尝试方法三:
也有人说.dll文件需要注册,用“RegSvr32 路径\Count.dll”命令,但这个是根本无法注册的。
警示信息:没有找到DullRegisterServer输入点,无法注册此文件
希望有高手指点以下给一段完整的代码或者具体的操作步骤。
非常感谢!
[解决办法]
将Count.dll及Count.lib文件拷贝到网站项目的Bin文件夹下面或System32下面
[DllImport("Count.dll",EntryPoint = "count")]
static extern double count(double a, double b);
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "" + count(2,3);
}