2011-03-29 98 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