2012-12-05 79 views
1

這可能是一個明顯的問題,但我在哪裏可以將.NET包裝類SoundTouchNet的dll放在C#項目中使用?我將.dll複製到Windows/Microsoft.NET/assembly/GAC_MSIL中,但是當我輸入「使用SoundTouchNet」時,編譯器找不到它。下面是該網站:http://code.google.com/p/soundtouchnet/使用Wrapper Class for C#

我下載了C++ SoundTouch庫的DLL,並將VC/lib中的.lib,.h文件放在VC/include中,並將.dll放在System32中。這也對嗎?

謝謝!

編輯:有誰知道如何將SoundTouchNet庫與C++ SoundTouch連接?如前所述,我現在已經成功地將SoundTouchNet引用添加到項目中。怎麼辦?我是否需要對SoundTouch庫做任何事情,或者獨立於它?非常感謝您的回覆!

+1

你添加DLL作爲參考你的項目? – ryadavilli

+0

非常感謝你的幫助,每個人! – m00nbeam360

回答

5

我想你錯過了將該DLL的引用添加到項目中。到你的項目

Project> Reference > Add Reference > Browse > Select the DLL 

添加參考有關更多信息,see this link

2

嘗試添加對dll文件的引用。

using Sound...只是不需要每次寫SoundTouchNet.RandomFunction()

0

你需要在全局程序集緩存註冊您的外部DLL,

gacutil.exe /i [Assembly] 

的調用是很容易的,這裏是參考http://msdn.microsoft.com/en-us/library/ex0ss12c(v=vs.80).aspx

+0

它根本不需要在GAC中,我建議這樣做非常罕見。上次我使用GAC時,它完全是用於VB => C#COM互操作的目的。除此之外,我從不碰它。 –

+0

@MarcGravell,也許我不明白這個問題,但我看到OP提到了GAC,所以我的意圖是提及註冊文件的「physycal copy」,但也許你是對的。 –

2

重要的是要了解組件參考和using di rectives。一個using指令如

using SoundTouchNet; 

只是導入命名空間在源文件中使用。這意味着如果你有一個叫SoundTouchNet.Foo的類,你可以在代碼的其他地方寫Foo

即使組件通常包含匹配組件名稱,其命名空間中的類型(例如將Foo.Bar.dll通常含有Foo.Bar命名空間中的類型)這是只是慣例 - 兩種名稱都是完全獨立的。

要使這種類型首先可用,您需要將參考添加到包含它的部件中。假設您使用Visual Studio,請轉到解決方案資源管理器,右鍵單擊References文件夾式圖標,然後選擇「添加引用」。就我個人而言,我通常會避免使用GAC,只需在同一解決方案或特定文件中添加對其他項目的引用(我通常將它們放在lib目錄中便於理解)。您還應該考慮使用NuGet進行軟件包管理 - 許多開源庫現在可用作NuGet軟件包。

+0

我不記得你是如何告訴應用程序在程序集的另一個目錄中查找的,是在配置中的東西嗎? – TimothyP

+0

@TimothyP:那麼通常你讓Visual Studio將程序集複製到輸出目錄中...... –

+0

是的,但不是隻是將dll放在與exe文件相同的目錄中?您提到了一個「lib」目錄,所以我以爲/exe + /lib/dlls – TimothyP