| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2291 人关注过本帖
标题:用C# 写的DLL 调用问题
只看楼主 加入收藏
dkhui
Rank: 1
等 级:新手上路
威 望:1
帖 子:24
专家分:0
注 册:2008-6-20
收藏
 问题点数:0 回复次数:9 
用C# 写的DLL 调用问题
我自己编写的DLL   test.dll
代码如下
namespace test
{
        public static int Login(string username, string password)
        {
             //业务代码就不贴出来了
        }
        public static int sendMessage(string username, string password, string message, string mobile)
       {
            //业务代码就不贴出来了
        }
}

其中有 Login 和 sendMessage 方法,我自己用C# 开发软件是 Microsoft Visual Studio 2005  直接点引用-添加引用 调用它是没有任何问题。
但是如果这样 调用的话
[DllImport("test.dll", EntryPoint = "Login")]
 public static extern int Login(string username, string password);
 private void button1_Click(object sender, EventArgs e)
{
       MessageBox.Show(Login(_name,_pass).ToString());
}
程序就会出现错误,错误提示:
  无法在 DLL"test.dll"中找到名为"Login"的入口点

请高手指点一下,我应该怎么修改一下,或者是说 C#根本不能写这样的DLL ?
搜索更多相关主题的帖子: DLL 
2008-11-26 16:28
dkhui
Rank: 1
等 级:新手上路
威 望:1
帖 子:24
专家分:0
注 册:2008-6-20
收藏
得分:0 
高手赐教啊,在线等回复啊!!!

早已经报废......
2008-11-26 16:44
dkhui
Rank: 1
等 级:新手上路
威 望:1
帖 子:24
专家分:0
注 册:2008-6-20
收藏
得分:0 
怎么就没人理我呢,哎!

早已经报废......
2008-11-26 17:30
sunlijuan11187
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:159
专家分:0
注 册:2008-7-2
收藏
得分:0 
代码如下
namespace test
{
        public static int Login(string username, string password)
        {
             //业务代码就不贴出来了
        }
        public static int sendMessage(string username, string password, string message, string mobile)
       {
            //业务代码就不贴出来了
        }
}
这段代码是三层结构业务层的代码吗??
写在一个类里面的吧  这样呢
namespace test
{
  public class 名字
  {
       public static int Login(string username, string password)
        {
             //业务代码就不贴出来了
        }
        public static int sendMessage(string username, string password, string message,     string mobile)
       {
            //业务代码就不贴出来了
        }

  }
}
我也不知道对不对   呵呵

公司网站网址 http://www.allywll.cc/,专做网络电话
2008-11-27 19:20
铲铲
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:506
专家分:0
注 册:2006-5-2
收藏
得分:0 
DllImport是平台调用,Windows平台调用使用的是Native编译代码,dll入口遵循PE标准。但C#编写的代码编译成的dll是经过封装的,并不符合Native代码。它遵循PE文件头,然后指向一个CLR头,在该头中含有元数据,.net识别该元数据,但Win32 Native并不识别它。因此就找不到那个入口。
.net编译的dll代码只能在基于.net的平台框架下调用。微软为什么这么做,有其无法解决的矛盾面。首先,.net要实现简单易用,就要摈弃指针、宏定义的诸多不算优秀的语法,而且采用了一个完全新式的CTS(Common Type System,通用类型系统),和以往在win32下所使用的类型有出入。

铲铲是也
2008-11-27 20:03
dkhui
Rank: 1
等 级:新手上路
威 望:1
帖 子:24
专家分:0
注 册:2008-6-20
收藏
得分:0 
谢谢5楼 斑竹解答。 也就是说 用C#编译出来的DLL 只能用.net平台下的C、C++、VB这些语言调用,而不能被JAVA、Delphi等语言调用,是吗? 如果说我要用C#写个接口,给 Delphi 调用,能实现吗?

早已经报废......
2008-11-28 08:34
dkhui
Rank: 1
等 级:新手上路
威 望:1
帖 子:24
专家分:0
注 册:2008-6-20
收藏
得分:0 
以下是引用sunlijuan11187在2008-11-27 19:20的发言:

代码如下
namespace test
{
        public static int Login(string username, string password)
        {
             //业务代码就不贴出来了
        }
        public static int sendMessage(string ...



呵呵,很心细的MM, 类名忘了贴上来了 :)

早已经报废......
2008-11-28 08:36
countryskyboy
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-11-28
收藏
得分:0 
[System.Runtime.InteropServices.DllImport("user32")]
这个方式对不对
2008-11-28 09:16
铲铲
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:506
专家分:0
注 册:2006-5-2
收藏
得分:0 
是的,暂不能实现。

铲铲是也
2008-11-28 13:08
dkhui
Rank: 1
等 级:新手上路
威 望:1
帖 子:24
专家分:0
注 册:2008-6-20
收藏
得分:0 
谢谢斑竹,让我郁闷了几天的问题,终于搞清楚了,原来不是我不行,是微软不让,哈哈~~~~

早已经报废......
2008-11-28 17:28
快速回复:用C# 写的DLL 调用问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028783 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved