如何添加外部依赖本地的dll?(How to add external native depende

2019-09-02 04:03发布

我有两个项目。 第一个是Windows窗体应用程序项目,第二个是一个类库项目。 Сlass库项目与FANN 。 Windows窗体为启动项目。

我应该有Fann.Net.dll和fanndoubleMT.dll与FANN工作。 我下载了这些库,并把它们在一个文件夹lib中 ,位于该解决方案的根。

我说Fann.Net.dll外部DLL的类库项目。 我编译了该项目。 我得到了一个表示“无法加载DLL‘fanndoubleMT.dll’。我加入fanndoubleMT.dll文件夹Windows_Forms_Application \ BIN \调试修正了这个错误的错误。

我认为这是一个可怕的解决问题的办法,因为我使用git,每次你需要的DLL转移到这个文件夹在新的工作环境。

此致,丹尼斯。

Answer 1:

你可以试试这个:

  1. 添加/现有项目,而不是添加引用。
  2. 使用添加链接。
  3. 确保该项目在build文件夹中被复制。 在VS库的属性,设置生成操作内容和复制到输出目录如果较新的复制。
  4. 完成。 重建和测试。

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



Answer 2:

您可以添加本地的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这意味着“副本,如果新”。



Answer 3:

你不能“添加引用”非托管的DLL。 一个解决办法是添加后生成事件的Windows窗体项目。 喜欢的东西:XCOPY .. \ LIB \ fanndoubleMT.dll $(TARGETPATH)后生成的事件也可以执行一个.cmd或.bat文件

你仍然需要参考的托管程序集,“Fann.Net.dll”



Answer 4:

梁启超撰写上述方案仅适用于平坦的项目结构! 您可能要在解决方案中所有的DLL文件整理到一个名为“依赖条件”的文件夹。 但要注意的是文件相对拷贝到项目结构在Solution Explorer。 (与Visual Studio 2015测试)

  1. 在Solution Explorer中创建文件夹的依赖
  2. 添加/现有项目,而不是添加引用。
  3. 使用添加链接。
  4. 在VS库的属性,设置生成操作内容和复制到输出目录如果较新的复制。

现在你应该有以下解决方案资源管理结构:

Your Project
- class1.cs
- Dependencies\Fann.Net.dll
- Dependencies\fanndoubleMT.dll

添加postbuild步:

xcopy "$(TargetDir)\Dependencies" "$(TargetDir)"  /s /e /h /Y

该解决方案组合将文件添加到项目和创建后生成步骤具有以下优点:

  • 项目组织得很好
  • 无需修改后生成步骤,如果有人添加一个新的依赖,以解决方案资源管理器后,
  • 如果你使用的颠覆,它会重置存储库锁定文件的只读标志


Answer 5:

如果DLL是不是在项目的bin文件,你应该让该dll被复制。

  1. 右键单击您的DLL

  2. 点击属性

  3. 如果复制到输出目录是不要复制 ,选择复制始终

  4. 重建该项目。 它会出现。



Answer 6:

  1. 右键单击您的项目
  2. 选择添加,然后参考...
  3. 在上浏览参考管理器窗口中点击...(位于底部)。
  4. 找到你的.dll文件,然后按添加。


文章来源: How to add external native dependency dll?
标签: c# dll fann