2013-05-07 99 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. 重建项目。它会出现。

相关问题