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

标签 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: undefined symbol: _ZN5caffe3NetIfEC1ERKSsNS_5PhaseEPKS1_

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

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

让一切
构建文件:../src/Test_Caffe.cpp 调用:交叉 G++ 编译器
g++ -I"/home/smilart/0_Intall/1 caffe-rc3/include/"-I/usr/local/cuda-7.5/include/-O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/Test_Caffe.d"-MT"src/Test_Caffe.o"-o "src/Test_Caffe.o""../src/Test_Caffe.cpp" 完成构建:../src/Test_Caffe.cpp

构建目标:Test_Caffe 调用:交叉 G++ 链接器
g++ -L/usr/local/cuda/lib64/-L"/home/smilart/0_Intall/1 caffe-rc3/build/lib/"-o "Test_Caffe"./src/Test_Caffe.o -lboost_system -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs -lcudart -lcublas -lcurand -lboost_filesystem -lglog -lprotobuf -lcaffe 完成构建目标:Test_Caffe

最佳答案

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

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

  1. 将库(和 header )安装到系统目录中,系统加载程序会在该目录中查找库。然后重建。

  2. 通过编辑 /etc/ld,将目录 /home/smilart/0_Intall/1 caffe-rc3/build/lib 添加到加载程序查找的路径.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 项目设置中的某处完成的。

我推荐最后一种方案。

关于c++ - 使用 Caffe 运行简单的 C++ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39597818/

相关文章:

java - 创建新数据库连接时 Eclipse 不显示 MySQL 驱动程序

eclipse - 为什么eclipse无法为hbase导入软件包?

c - in - gcc 内联汇编的操作数类型不匹配

c - 检测明显的字节序问题

c++ - Boost 程序选项遍历 variables_map

c++ - 重新平衡二叉搜索树的函数

java - Tomcat7服务器错误,目录中不存在文件或不是可读目录

c++ - 我可以在GCC和Clang中为单个功能启用严格的浮点行为吗?

c++ - 返回 vector 堆栈引用时出现问题

c++ - 使用鼠标滚轮时如何更新光标?