2016-07-11 6 views
0

Ich möchte nur cpp verwenden, um LevelDB Features aus Caffe extrahiert zu lesen. Ich verwende den folgenden Code in Eclipse:libcaffe Fehler in cpp Eclipse

// Copyright 2014 BVLC and contributors. 

#include <glog/logging.h> 
#include <stdio.h> // for snprintf 
#include <google/protobuf/text_format.h> 
#include <leveldb/db.h> 
#include <leveldb/write_batch.h> 
#include <string> 
#include <vector> 
#include <cassert> 
#include <iostream> 
#include <map> 

//#include "cpp/sample.pb.h" 
#include "caffe/proto/caffe.pb.h" // for: Datum 
using namespace caffe; 
#define NUMBER_FEATURES_PER_IMAGE 16 
using namespace std; 

int main(int argc, char** argv) 
{ 
    //google::InitGoogleLogging(argv[0]); 
    if (argc < 2) 
    { 
     printf("ERROR! Not enough arguments!\nusage: %s <feature_folder>", argv[0]); 
    exit(1); 
    } 

LOG(INFO) << "Creating leveldb object\n"; 
leveldb::DB* db; 
leveldb::Options options; 
options.create_if_missing = true; 
leveldb::Status status = leveldb::DB::Open(options, argv[1], &db); 
assert(status.ok()); 

leveldb::Iterator* it = db->NewIterator(leveldb::ReadOptions()); 
int i = 0; 
double count = 0.0f; 
for (it->SeekToFirst(); it->Valid(); it->Next()) 
{ 
    Datum d; 
    d.clear_float_data(); 
    d.clear_data(); 
    d.ParseFromString(it->value().ToString()); 
    for (int j = 0; j < d.height(); ++j) 
     count += d.float_data(j); 
    i++; 
} 
assert(it->status().ok()); 

LOG(INFO) << "Number of datums (or feature vectors): " << i << "\n";; 
LOG(INFO) << "Reduction of All Vectors to A Scalar Value: " << count << "\n"; 
delete it; 
} 

Es fehlerfrei baut, aber wenn es läuft, sagt: /home/deep/CUDA-Arbeitsplatz/ReadLevelDB/Debug/ReadLevelDB: Fehler beim Shared Libraries Laden: libcaffe .so.1.0.0-rc3: Gemeinsame Objektdatei kann nicht geöffnet werden: Keine Datei oder Verzeichnis

Was ist das Problem?

+0

meine vorübergehende Lösung ist libcaffe.so.1.0.0-rc3 zu kopieren, was auch immer Verzeichnis arbeite ich aus. – rahim

Antwort

0

Sie Programm nicht finden * .so. Es gibt drei Verfahren:

  1. erstellen Links * .so in/usr/lib:

ln -s /where/you/install/lib/*.so/usr/lib

sudo ldconfig

  1. Ändern LD_LIBRARY_PATH:

export LD_LIBRARY_PATH =/wo/Sie/install/lib: $ LD_LIBRARY_PATH

sudo ldconfig

  1. Ändern /etc/ld.so.conf:

vim /etc/ld.so.conf

Add/wo/Sie/install/lib

sudo ldconfig