2011-03-29 100 views
0

你好 我想用一些函数创建一个dll。对于初学者,我试图做一些简单的例子来测试。我正在创建一个新的类库,例如下面的代码。 当我构建它(没有错误),并创建一个DLL文件,我试图通过在C中的dll问题#

[DllImport("nllibrary.dll")] 
public static extern long Add(long i, long j); 

使用它在我的其他项目,我可以编译,但是当我尝试运行应用程序时,它给我的错误“找不到入口点“。当我用depends.exe查看这个DLL时,它在dll中没有显示任何函数。 我的DLL有什么问题?

DLL的代码:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 


namespace nlLibrary 
{ 
    public class nlClass 
    { 

     public static long Add(long i, long j) 
     { 
      return (i + j*2); 
     }   
    }  
} 
+2

您不需要为此使用'DllImport'。 – Snowbear 2011-03-29 20:36:44

+0

控制台应用程序?你是否有一个入口点,例如Main定义,开箱即可看到类似于static int Main(string [] args)的东西作为可以更改的入口点,是你在那里调用nlLibrary.nlClass.Add()还是...? – kd7 2011-03-29 20:39:23

+0

也是啊,你不需要DLL导入只是你创建的大会的引用 – kd7 2011-03-29 20:40:04

回答

6

你并不需要使用[DllImport]属性。这是为了调用非托管C/C++库。对于.NET,你只需将生成的DLL添加到项目引用,并直接使用它:

enter image description here

因此,举例来说,如果你有叫Proj1(类库)和Proj2 Visual Studio解决方案两个项目(控制台应用程序),您右键单击Proj2的参考,然后从项目参考选项卡中选择Proj1。然后,您只需直接使用这个类:

long result = nlClass.Add(1, 3); 

已增加使用该命名空间的正确后:

using nlLibrary; 
+0

谢谢,这工作! – rodro 2011-03-29 20:47:57

0

而且,你不能运行DLL。当你尝试运行一个DLL(调试)时,它会给你那个错误信息。如果您想测试您的DLL,请考虑创建test project

+0

我不运行dll。我已经将它添加到其他项目(Windows窗体)。 – rodro 2011-03-29 20:43:39

+0

@rodro:您必须确保表单项目是默认项目。右键单击它并选择“设为启动项目”。你的DLL现在是你的启动项目。 – Will 2011-03-29 20:44:51