我遇到的是ASP.NET(C#)调用C++写的DLL的问题!
我不知道我的思路是否正确,还请给予指点:
我的目的如下:单击首页上的控件按钮,转入另一页面,并在其中显示DLL中程序的内容.
我的具体做法如下:
1,我建了两个页面,分别命名为default1.aspx(按钮控件在其上),default2.aspx(用来显示DLL的内容),
通过单击页面1上的按钮,转到页面2。这一步已经实现。
2,我建了一个类,类名为class1.cs,功能是实现用C#调用DLL。其代码如下:
public class RefCommon
{
[DllImport("DLL6.dll",
EntryPoint = "mySum",
CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern int mySum(int a, int b);
public static void invoke()
{
int i = mySum(3, 2);
Console.WriteLine("the value is:{0}", i);
}
}
此段代码我认为没有错误,因为我用建控制台的程序,用纯C#实现调用。
3,我在第二个页面default.aspx.cs中调用此类中的函数,代码如下:
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
RefCommon.invoke();
}
}
4,我将DLL(DLL6.DLL)放入建的这个工程的文件夹里面(注意:此处我认为有问题,因为我在控制台程序
里存放的DLL的文件夹和原有的不一样,现在的没有bin文件夹),我搜GOOGLE里面说要添加引用,步骤如下:
解决方案资源管理器>>>引用>>>添加引用>>
在弹出的对话框中选择COM选项卡>>浏览>>>找到.dll确定后.
但是我在COM选项卡找不到DLL6.DLL,我不知道如何添加进去啊??
5,最后,我测试,老提示找不到DLL6。DLL,我都调两天了,还是没有解决!!请大家帮忙解决啊!
我不知道我的思路是否正确,还请给予指点:
我的目的如下:单击首页上的控件按钮,转入另一页面,并在其中显示DLL中程序的内容.
我的具体做法如下:
1,我建了两个页面,分别命名为default1.aspx(按钮控件在其上),default2.aspx(用来显示DLL的内容),
通过单击页面1上的按钮,转到页面2。这一步已经实现。
2,我建了一个类,类名为class1.cs,功能是实现用C#调用DLL。其代码如下:
public class RefCommon
{
[DllImport("DLL6.dll",
EntryPoint = "mySum",
CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern int mySum(int a, int b);
public static void invoke()
{
int i = mySum(3, 2);
Console.WriteLine("the value is:{0}", i);
}
}
此段代码我认为没有错误,因为我用建控制台的程序,用纯C#实现调用。
3,我在第二个页面default.aspx.cs中调用此类中的函数,代码如下:
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
RefCommon.invoke();
}
}
4,我将DLL(DLL6.DLL)放入建的这个工程的文件夹里面(注意:此处我认为有问题,因为我在控制台程序
里存放的DLL的文件夹和原有的不一样,现在的没有bin文件夹),我搜GOOGLE里面说要添加引用,步骤如下:
解决方案资源管理器>>>引用>>>添加引用>>
在弹出的对话框中选择COM选项卡>>浏览>>>找到.dll确定后.
但是我在COM选项卡找不到DLL6.DLL,我不知道如何添加进去啊??
5,最后,我测试,老提示找不到DLL6。DLL,我都调两天了,还是没有解决!!请大家帮忙解决啊!
写成OCX或者COM吧
但,总会有问题的
[DllImport("d:\\DLL6.dll",
EntryPoint = "mySum",
CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]