我遇到了同样的问题,今天设法解决了。但是,我对 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 : 我的视觉是法语的,我尽量翻译选项。