2013-05-07 46 views
17

我有兩個項目。首先是一個Windows Forms應用程序項目,其次是一個類庫項目。類庫項目與FANN一起使用。 Windows窗體是啓動項目。如何添加外部本地依賴項DLL?

我應該有Fann.Net.dll and fanndoubleMT.dll與FANN一起工作。我下載了這些庫,並將它們放在位於解決方案根目錄的文件夾lib中。

我將Fann.Net.dll作爲外部dll添加到類庫項目。我編譯了這個項目。我得到一個錯誤,說:「無法加載DLL'fanndoubleMT.dll'。我通過將fanndoubleMT.dll添加到文件夾Windows_Forms_Application \ bin \ Debug中修復了此錯誤。

我認爲這是一個可怕的解決方案,因爲我使用git,每次你需要的DLL轉移到這個文件夾在新的工作環境。

真誠的,丹尼斯。

回答

24

你可以試試這個:

  1. 添加/現有項目,而不是添加參考。
  2. 使用添加爲鏈接。
  3. 確保將項目複製到生成文件夾中。在VS中庫的屬性中,將「構建操作」設置爲「內容」並將「複製到輸出目錄」設置爲「更新時複製」。
  4. 完成。重建和測試。

建議在鏈接http://social.msdn.microsoft.com/Forums/en-US/1b1b316a-8648-4243-a651-84de51fd2508/reference-native-dll-from-managed-c-project?forum=vssmartdevicesvbcs

4

你不能「添加引用」非託管的DLL。 一種解決方案是增加Post Build Event你的Windows Forms項目 類似於:xcopy .. \ lib \ fanndoubleMT.dll $(TargetPath) 也可以執行後構建事件一個.cmd或.bat文件

你仍然需要參考的託管程序集,「Fann.Net.dll」

6

您可以添加本地dll作爲鏈接項目,並使用「複製如果更新」。
本機dll的問題在於,有時您會希望根據項目的配置(調試/發佈或平臺)使用不同的dll。

您可以編輯該項目的.csproj和有條件鏈接本地DLL:

<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|Win32' "> 
    <Content Include="..\..\..\..\..\bin\Win32\Release\fanndoubleMT.dll"> 
     <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 
    </Content> 
</ItemGroup> 
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|Win32' "> 
    <Content Include="..\..\..\..\..\bin\Win32\Debug\fanndoubleMT_d.dll"> 
     <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 
    </Content> 
    </ItemGroup> 
    <ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> 
    <Content Include="..\..\..\..\..\bin\x64\Debug\fanndoubleMT_d.dll"> 
     <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 
    </Content> 
    </ItemGroup> 
    <ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> 
    <Content Include="..\..\..\..\..\bin\x64\Release\fanndoubleMT.dll"> 
     <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 
    </Content> 
    </ItemGroup> 

注意複製選項設置爲PreserveNewest「如果新副本」,這意味着。

+0

您還可以在包含值中使用$(Configuration)\ $(Platform)宏。然後,您可以創建一個以Debug爲條件的宏,擴展爲「_d」(並且在非調試時不包含任何內容)以將其減少爲僅一個ItemGroup。 – kornman00 2017-02-19 01:32:48

-1
  1. 右鍵點擊你的項目
  2. 選擇添加,然後參考...
  3. 在上瀏覽參考管理器窗口中點擊...(位於底部)。
  4. 找到您的.dll,然後按添加。
+1

以這種方式添加非託管dll是不可能的 – 2017-02-17 12:26:50

0

如果dll不在項目bin文件中,應該允許複製dll。

  1. 右鍵單擊您的DLL

  2. 單擊屬性

  3. 如果複製到輸出目錄是不要複製,選擇始終複製

  4. 重建項目。它會出現。

相關問題