【问题标题】:How to include Caffe to Visual Studio 2013?如何将 Caffe 包含到 Visual Studio 2013 中?
【发布时间】:2016-09-20 06:41:59
【问题描述】:

我不是在问如何在 Windows 下构建 Caffe,是这样做的。但是现在想知道如何将 Caffe 包含到我的项目中以将其用作库...

现在我看到以下文件夹,其中包含标题:

咖啡\包括\咖啡

并构建,其中包含 .exe、.dll 和一些 .lib 文件:

caffe\Build\x64\Debug

因此,我已将包含添加到我的项目中的 Additional Include Directories 和 Linker - 带有 Build 的文件夹中。

尝试构建我的项目,但收到很多关于未解决的依赖项的错误,例如,Caffe 项目使用它通过 Nuget 构建的 boost。

所以我应该通过 Nuget 将所有这些包(大约 12 个)包含到我的项目中,这就是它的工作原理吗?还是有其他方法,我做错了什么?

任何关于构建机制的建议和解释都将不胜感激。

【问题讨论】:

    标签: visual-studio build linker nuget caffe


    【解决方案1】:

    我遇到了同样的问题,今天设法解决了。但是,我对 Nuget 一无所知,我也不是构建机制方面的专家。所以我的解决方案肯定是混乱的,远非最佳,但它对我有用,所以我希望它也能帮助你。我假设你使用了微软领导的官方 windows 分支 (https://github.com/BVLC/caffe/tree/windows),以下是我遵循的步骤:

    将 libCaffe 项目添加到您的解决方案中

    • 将这些文件复制到您的项目文件夹:
      • caffe\windows\CommonSettings.targets
      • caffe\windows\CommonSettings.props
      • caffe\windows\scritps\ 文件夹
    • 右键单击您的解决方案 -> 添加现有项目 -> 选择 caffe\windows\libcaffe\libcaffe.vcxproj

    添加 libcaffe 作为参考

    根据这些问题: https://github.com/Microsoft/caffe/issues/48 https://github.com/Microsoft/caffe/issues/45

    • 项目属性 -> 通用属性 -> 引用 -> 添加新引用
    • 选择 libcaffe
    • 使用库依赖输入设置为

    添加包含

    项目属性->配置设置->C/C++->常规->其他包含目录->选择一个包含所有需要的目录:

    这是我很确定我们可以找到更好的地方,因为我必须手动收集来自 caffe (caffe\include) 的所有包含目录及其所有依赖项(gflags、glog 等...)。只是不时尝试编译,看看缺少什么。

    添加库

    首先,给出您将收集所有库的路径: 项目属性 -> 配置设置 -> 链接器 -> 常规 -> 附加库目录

    然后你必须显式链接(至少我必须这样做):Project 属性 -> 配置设置 -> 链接器 -> 输入 -> 附加依赖项

    这是我必须添加的: cudart.lib;cuda.lib;nppi.lib;cufft.lib;cublas.lib;curand.lib;Shlwapi.lib;hdf5.lib;hdf5_hl.lib;opencv_highgui2410.lib;opencv_core2410.lib;

    加上“继承值”中的其他一些:cpprest120_2_6.lib cudnn.lib;gflags.lib;gflags_nothreads.lib;leveldb.lib;libglog.lib;libhdf5.lib;libhdf5_hl.lib;libopenblas.dll.a;libprotobuf.lib;lmdb.lib;kernel32.lib;user32.lib; gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib

    也许其中一些特定于我的应用程序,但至少这些对我有用。

    您可以在提取的文件夹“NugetPackages”中找到其中的大部分。

    其他问题

    在我的例子中,我在我的项目中使用了 boost 1.56,但是 caffe 使用的是 1.59 版本,所以出现了冲突,我按照error LNK2005, already defined? 的回答并添加了 FORCE:MULTIPLE 选项:项目属性-> 配置设置 -> 链接器 -> 常规 -> 强制输出

    再说一次,这可能不是最好的解决方案,每当我使用“FORCE”——某事时,我都会有这种不好的感觉......

    在可执行目录中添加dll

    您应该在构建目录中找到其中的大部分。我缺少从 https://github.com/ChenglongChen/caffe-windows/tree/master/bin 下载的 libgflags

    希望这会有所帮助。

    PS : 我的视觉是法语的,我尽量翻译选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-25
      • 1970-01-01
      • 1970-01-01
      • 2013-09-27
      • 2014-02-01
      • 1970-01-01
      • 2017-05-14
      • 2016-09-01
      相关资源
      最近更新 更多