2011-06-08 69 views
0
public const string LIB_GVC = "gvc.dll"; 
    public const string LIB_GRAPH = "graph.dll"; 
    public const int SUCCESS = 0; 


    [DllImport(LIB_GVC)] 
    public static extern IntPtr gvContext(); 

後來,在主要方法中調用gvContext()並引發DllNotFoundException。在我的項目中,我進入了Project-> Properties並設置參考路徑,以便我有一個名爲「resources」的文件夾,其中包含我所有的DLL,包括gvc.dll。我認爲這會做到這一點,但事實並非如此。我需要做什麼?Visual Studio DllNotFoundException

注意:我無法像往常一樣使用添加引用,我意識到這種行爲是正常的,因爲Graphviz不是C#庫。我對術語也有些模糊,爲什麼它被稱爲「非託管DLL」?這似乎是因爲它不是從C#代碼編譯的,而是真的/而不是整個故事?

我跟隨this tutorial如果它有助於澄清任何事情。

回答

1

問題是可執行文件沒有找到可執行文件的路徑。運行後,請嘗試放置在/ bin文件夾中,然後看看它是否有效。如果是這樣,你的資源文件夾是a)找不到或者b)你在編譯時沒有正確設置複製操作。對於「什麼是非託管」,COM和本地組件通過庫本身(本地總是,本地總是可以由運行時處理COM)還是通過.NET以外的其他方式來處理它們的內存。 CLR無法管理內存使用情況,因爲它們不是.NET組件。這就是爲什麼他們被稱爲「非託管」。

+0

工作。我知道如何創建構建規則,以便我需要的所有.dll都將被複制到Debug/Release文件夾中。這是最好的方法嗎? – KyleM 2011-06-08 16:24:52