我有两个项目。 第一个是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转移到这个文件夹在新的工作环境。
此致,丹尼斯。
你可以试试这个:
- 添加/现有项目,而不是添加引用。
- 使用添加链接。
- 确保该项目在build文件夹中被复制。 在VS库的属性,设置生成操作内容和复制到输出目录如果较新的复制。
- 完成。 重建和测试。
建议中的链接http://social.msdn.microsoft.com/Forums/en-US/1b1b316a-8648-4243-a651-84de51fd2508/reference-native-dll-from-managed-c-project?forum=vssmartdevicesvbcs 。
您可以添加本地的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这意味着“副本,如果新”。
你不能“添加引用”非托管的DLL。 一个解决办法是添加后生成事件的Windows窗体项目。 喜欢的东西:XCOPY .. \ LIB \ fanndoubleMT.dll $(TARGETPATH)后生成的事件也可以执行一个.cmd或.bat文件
你仍然需要参考的托管程序集,“Fann.Net.dll”
梁启超撰写上述方案仅适用于平坦的项目结构! 您可能要在解决方案中所有的DLL文件整理到一个名为“依赖条件”的文件夹。 但要注意的是文件相对拷贝到项目结构在Solution Explorer。 (与Visual Studio 2015测试)
- 在Solution Explorer中创建文件夹的依赖
- 添加/现有项目,而不是添加引用。
- 使用添加链接。
- 在VS库的属性,设置生成操作内容和复制到输出目录如果较新的复制。
现在你应该有以下解决方案资源管理结构:
Your Project
- class1.cs
- Dependencies\Fann.Net.dll
- Dependencies\fanndoubleMT.dll
添加postbuild步:
xcopy "$(TargetDir)\Dependencies" "$(TargetDir)" /s /e /h /Y
该解决方案组合将文件添加到项目和创建后生成步骤具有以下优点:
- 项目组织得很好
- 无需修改后生成步骤,如果有人添加一个新的依赖,以解决方案资源管理器后,
- 如果你使用的颠覆,它会重置存储库锁定文件的只读标志
如果DLL是不是在项目的bin文件,你应该让该dll被复制。
右键单击您的DLL
点击属性
如果复制到输出目录是不要复制 ,选择复制始终
重建该项目。 它会出现。