使用Caffe运行简单的C ++程序

时间:2016-09-20 15:15:26

标签: c++ eclipse gcc caffe

我正在尝试使用caffe运行我的简单程序,但我收到了错误

#include <iostream>
#include <caffe/caffe.hpp>
#include <memory>
using namespace std;
using namespace caffe;

int main(int argc, char** argv) {
    shared_ptr<Net<float> > net_;

    string file_name="it doesn't matter ";

    net_.reset(new Net<float>(file_name, TEST));
// or just: Net<float>     caffe_test_net(file_name, TEST);
}

它构建没有问题,但是当我运行程序错误时: 符号查找错误:/ home / parrot / eclipse / workspace / Test_Caffe / Debug / Test_Caffe:未定义的符号:_ZN5caffe3NetIfEC1ERKSsNS_5PhaseEPKS1 _

我注意到:当我在代码caffe :: TEST或caffe :: TRAIN中使用时会出现问题。我认为有一些问题与:caffe :: Phase有关。所以我不能创建caffe :: Net,因为我不能使用caffe :: TEST。 当我使用caffe库中的其他类\ function ...等时,没有产生此错误。

我使用IDE:Eclipse来构建项目。一些来自控制台的报告:

使所有人 构建文件:../ src / Test_Caffe.cpp 调用:Cross G ++编译器
g ++ -I&#34; / home / smilart / 0_Intall / 1 caffe-rc3 / include /&#34; -I / usr / local / cuda-7.5 / include / -O0 -g3 -Wall -c -fmessage-length = 0 -MMD -MP -MF&#34; src / Test_Caffe.d&#34; -MT&#34; SRC / Test_Caffe.o&#34; -o&#34; src / Test_Caffe.o&#34; &#34; ../的src / Test_Caffe.cpp&#34; 完工建筑:../ src / Test_Caffe.cpp

构建目标:Test_Caffe 调用:Cross G ++ Linker
g ++ -L / usr / local / cuda / lib64 / -L&#34; / home / smilart / 0_Intall / 1 caffe-rc3 / build / lib /&#34; -o&#34; Test_Caffe&#34; ./src/Test_Caffe.o -lboost_system -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs -lcudart -lcublas -lcurand -lboost_filesystem -lglog -lprotobuf -lcaffe 完成建筑目标:Test_Caffe

2 个答案:

答案 0 :(得分:0)

目录/home/smilart/0_Intall/1 caffe-rc3/build/lib不在动态加载程序(加载动态库)查找的标准库搜索路径中。

这个问题基本上有四种解决方案:

  1. 将库(和标题)安装到系统目录中,系统加载器在其中查找库。然后重建。

  2. 通过编辑/home/smilart/0_Intall/1 caffe-rc3/build/lib并运行/etc/ld.so.conf程序,将目录ldconfig添加到加载程序查找的路径中。

  3. 修改环境变量LD_LIBRARY_PATH以包含/home/smilart/0_Intall/1 caffe-rc3/build/lib。很少有人推荐这个解决方案。

  4. 修改构建命令,以便链接器在可执行文件中嵌入正确的库路径。这必须通过将-Wl,-rpath,/home/smilart/0_Intall/1 caffe-rc3/build/lib添加到链接器命令行来完成。这是在链接器的Eclipse项目设置中的某处完成的。

  5. 我推荐最后一个解决方案。

答案 1 :(得分:0)

只是换另一种选择,你可以使用nsight - 一个eclipse版本的nvidia公司。这是来自caffe官方github的一些指示:https://github.com/BVLC/caffe/wiki/IDE---Nvidia%E2%80%99s-Eclipse-Nsight