当前位置:编程学习 > C#/ASP.NET >>

用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 ? --------------------编程问答-------------------- 没看过这种写法 --------------------编程问答-------------------- tete 你好,  你的意思是我这个DLL 的 写法错了吗? 我是第一次写这个东西,而且在网上也找不到什么列子,请你指教一下! --------------------编程问答-------------------- 我知道 如果是VC的。DLL被C
#调用的哈 就是你的。def文件没写好  C#可能也是接口没弄好  也可能有DEF文件吧 试下 --------------------编程问答-------------------- 记号学习 --------------------编程问答-------------------- .NET技术交流群...化学习和娱乐为一体的高手群..!.
如果你是性格活跃,开朗,幽默当然也爱学习的“同志”..那么请加群..72601863..! --------------------编程问答-------------------- 我也遇到过这种错误提示,我的是传参数的类型不对 --------------------编程问答--------------------
引用 3 楼 byte377 的回复:
我知道 如果是VC的。DLL被C 
#调用的哈 就是你的。def文件没写好  C#可能也是接口没弄好  也可能有DEF文件吧 试下


DLL 是用C# 写的,我自己测试的时候,用“引用”这种方式,调用没有问题! 但是如果要用其他语言调用的话,应该就是要用类似这种方式调用吧
[DllImport("test.dll", EntryPoint = "Login")] 

public static extern int Login(string username, string password); 


然后程序就会出现错误,错误提示: 
  无法在 DLL"test.dll"中找到名为"Login"的入口点 

我该怎么样把这个入口点写出来呢? 




--------------------编程问答--------------------
引用 6 楼 happy_gril 的回复:
我也遇到过这种错误提示,我的是传参数的类型不对

我觉得不会是参数问题! 参数一开始就已经指定的了,如果参数不匹配,应该编译不过 --------------------编程问答-------------------- 你的test.dll并不是native code编写的dll,不需要dllimport
--------------------编程问答-------------------- 如果你用DllImport()调用dll文件时应该把dll文件放在工程bin目录下的debug中 --------------------编程问答--------------------
引用 10 楼 yuexp 的回复:
如果你用DllImport()调用dll文件时应该把dll文件放在工程bin目录下的debug中


已经能引用的,只是调用里面的方法 就会出现找不到入口点的错误,并不是缺少文件 --------------------编程问答-------------------- 关注.... --------------------编程问答-------------------- DllImportAttribute 类 
指示该属性化方法由非托管动态链接库 (DLL) 作为静态入口点公开。

看看这句话是什么意思 --------------------编程问答-------------------- 关注 --------------------编程问答-------------------- 托管代码写的是伪DLL
不用那么掉吧,那样是掉NATIVE --------------------编程问答-------------------- 楼主补一下基础知识。

那种方式是调用VC等编写的非托管动态库的。

C#写的DLL库不能那样调用,只能引用或者用反射动态装载。 --------------------编程问答-------------------- 指示该属性化方法由非托管动态链接库  --------------------编程问答-------------------- 如果是C++些的DLL需要那样写, C#写的直接引用或是用反射加载 --------------------编程问答-------------------- 老大,你自己的c#写的那个dll,你没事干用DllImport干嘛呢
非托管代码才要这么调

你想想你分三层时,DAL,BLL你是咋调的 --------------------编程问答-------------------- 为什么用extern呢?

.net程序集只要引用了,
using 命名空间;
就可以调用了。 --------------------编程问答-------------------- 关注
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,