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

目的:在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
将生成的头文件添加到自己的项目中。
注意:
这里的python脚本实际上是调用了vs的dumpbin.exe,所以python脚本的需要在vs的开发工具命令行中使用https://blog.csdn.net/sinat_29890433/article/details/79556124

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

整个过程耗时五天,,,,反复调试vs配置,网上方法尝试,python使用,,, -.-,加油吧,方法总比问题多;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值