2017-09-22 44 views
0

我加了的NuGet庫調用Mpir.Net,擅長操縱巨大的數字比內置的BigInteger類做要快得多。當我添加它時,Visual Studio 2017能夠找到該DLL,將其添加到我的引用中,並根據DLL中定義的變量和函數提供建議。 Visual Studio顯然能夠找到DLL,這與來自具有類似問題的人的許多問題不同。引用的DLL的NuGet未找到工作的Visual Studio

的問題是,當我運行程序,它說xmpir64.dll沒有發現,儘管Visual Studio可以參考在代碼編輯器裏面的東西。

我試過改變目標.NET版本無濟於事。問題是什麼? 作爲一個方面說明,我對C#和Visual Studio很新,所以請在回答時記住這一點。 Here是一個鏈接到我的解決方案資源管理器的圖片。

+0

您是否還可以包含項目中包含的Mpir.Net.dll文件的屬性視圖? – CodexNZ

+0

@CodexNZ我得到它的工作。謝謝! – Byte11

回答

0

Mpir.Net是一個非託管庫(GMP)的包裝。當它說它無法找到DLL時,這是因爲它正在尋找您的項目文件夾中的非託管程序(xmpir64.dll)(而不是引用中的託管程序,它是包裝程序)。

你可能只需要點擊xmpir64.dll(和X32一個太),看看它在右下角的屬性,並確保副本輸出目錄設置爲「複製總是」。

作爲一個側面說明,Mpir.NET不出售其非託管資源的正確,所以如果你有一個大的內存泄漏不要感到驚訝。我不認爲我會將它用於商業代碼。

+0

我已經經歷了50個箍,以找到一個支持小數的快速BigInteger庫。你知道任何沒有任何重大缺陷的C#嗎?我不知道Mpir有內存泄漏問題。我沒有使用這個商業應用程序,但我用它來記憶很重的東西。我應該只使用內置的BigInteger嗎? – Byte11

+0

它的工作!爲什麼我要將它設置爲始終複製? – Byte11

+0

這就是我們最終做的,但我們正在使用低於256位的整數。我們還需要創建並銷燬它們中的很多,並且很快就發現了內存泄漏。 – MineR