您的位置:首页 > Web前端

【caffe-Windows】windows下libcaffe调用过程中碰到的问题梳理;

2018-03-12 15:58 274 查看
目的:在caffe原有工程下设计了自己的检测函数,封装在libcaffe.lib内用于其他项目;

新建自己的工程,添加好附加库目录,附加依赖项,附加目录后,首先编译遇到的问题时缺少依赖项“boost_date_time-vc120-mt-1_59.lib”

我们看caffe-window的原有工程目录,


它依赖了很多第三方库NugetPackages,所有我们也需要添加NugetPackages在我们的工程中;网络上有许多设置方法,我在VS2013中没找到导入的方法,最后使用了一个非常“土”的办法:对比caffe.vcxproj和自己的Test.vcxproj,把caffe.vcxproj最下面关于NugetPackages依赖项的部分直接复制到.vcxproj中,重新加载即可,注意提前配号自己工程中NugetPackages的路径;

2.经过修改后,再次编译成功。启动单步调试,此时会报错缺少“*.dll”,去原caffe工程文件下,把需要的.dll都拷贝到自己生成的可执行文件(.exe)下,即可启动调试;

3.在调试中会出现类似“F0519 14:54:12.494139 14504 layer_factory.hpp:77] Check failed: registry.count(t ype) == 1 (0 vs. 1) Unknown layer type: Input (known types: Input )”的错误,网上说要在相关层中添加包含extern INSTANTIATE_CLASS(InputLayer)的头文件文件等几种方法,均尝试无效后,最后使用这位博主的方法得到解决http://blog.csdn.net/LG1259156776/article/details/52542386

据该博客所说,因为vs下,若未使用的符号则不会链接到生成的静态库中,所有caffe的静态库中,存在未链接的部分;素有报该错误是该网络层存在,但未链接后,可以通过强行链接的方式进行解决;

在VS2013编译环境下,使用该博主的python,获取libcaffe.lib所有用到的符号,并制作成头文件强制链接;http://www.cnblogs.com/coderzh/p/LinkAllSymbols.html

python脚本https://github.com/coderzh/LinkAllSymbols

将生成的头文件添加到自己的项目中。

4.进行强制链接后再次进行调试,依然有报错,这次是许多符号的重复定义,主要来自opencv内的报错。我通过对比符号名,将上一步生成的用于强制链接的头文件内重复链接的部分注释掉,即可运行;

整个过程耗时五天,,,,反复调试vs配置,网上方法尝试,python使用,,, -.-,加油吧,方法总比问题多;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  caffe-windows
相关文章推荐