首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • asp.net(c#)调用C++的DLL问题! [无满意答案结贴,结贴人:mupengzhi]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mupengzhi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-19 11:13:20 楼主
    我遇到的是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,我都调两天了,还是没有解决!!请大家帮忙解决啊!
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dk385
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 11:23:561楼 得分:0
    不行的话加上路径:  如:
    [DllImport("d:\\DLL6.dll",
            EntryPoint = "mySum",
            CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mupengzhi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 10:16:292楼 得分:0

    上面问题已解决,但是我又遇到一新的问题:
    如下所叙:
    我在用C#调用C++生成的DLL时,C++中函数的参数是一个难点:
    我的C++程序函数如下:
    int main(int argc, char **argv)
    {
      //---------[ check the arg count ]----------------------------------------
      if ( argc < 2) {
      cout < < "Usage:\n";
      cout < < argv[0] < < " IpAddress\n";
      cout < < "Oid: argv[1] < <\n";
     
    #ifdef _SNMPv3
              cout < < "        -snSecurityName, " < < endl;
              cout < < "        -slN , securityLevel to use, default N = 3 = authPriv" < < endl;
              cout < < "        -smN , securityModel to use, only default N = 3 = USM possible\n";
              cout < < "        -cnContextName, default empty string" < < endl;
              cout < < "        -ceContextEngineID, as hex e.g. 800007E580, default empty string" < < endl;
              cout < < "        -authPROT, use authentication protocol NONE, SHA or MD5\n";
              cout < < "        -privPROT, use privacy protocol NONE, DES, 3DESEDE, IDEA, AES128, AES192 or AES256\n";
              cout < < "        -uaAuthPassword\n";
              cout < < "        -upPrivPassword\n";
    #endif
      return 1;
      }
      请问能调用Main()吧?
      如果能调用main(),请问如何在C#中写其参数?(文件名,IP地址,对象标识符OID);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • No1bigtooth
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 10:36:463楼 得分:0
    jf
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved