2017-11-02 4 views
0

私はCaffeライブラリの初心者です。 このチュートリアルの例では、コードをコンパイルしテストしていただけです:https://github.com/DeepLearningStudy/caffe/blob/master/examples/ex4_layer/main.cpp。 私はCPU_ONLYをビルドしているので、コンパイルすると `void caffe :: caffe_gpu_dot(int、double const *、double const *、double *) 'への未定義の参照がエラーとして出力されます。 Forward()関数を呼び出すと発行されます。 コンパイルを完了するために、私はargmaxのレイヤーコードを変更し、forward_cpu()をpublic関数メンバーとして追加しました。CPU_ONLY build:関数をコンパイルするForward()はエラー "未定義の参照..."を返します。

行がありますが: Caffe :: set_mode(Caffe :: CPU) はgpuメソッドの順方向関数呼び出しのようです。

私のCMakeLists.txtは次のとおりです。 cmake_minimum_required(VERSION 2.8.8)

project (hellocaffe)

if(ON) if(NOT OpenCV_FOUND) set(Caffe_OpenCV_CONFIG_PATH "/usr/share/OpenCV") if(Caffe_OpenCV_CONFIG_PATH) get_filename_component(Caffe_OpenCV_CONFIG_PATH ${Caffe_OpenCV_CONFIG_PATH} ABSOLUTE)

 if(EXISTS ${Caffe_OpenCV_CONFIG_PATH} AND NOT TARGET opencv_core) 
    message(STATUS "Caffe: using OpenCV config from ${Caffe_OpenCV_CONFIG_PATH}") 
    include(${Caffe_OpenCV_CONFIG_PATH}/OpenCVModules.cmake) 
    endif() 

else() 
    find_package(OpenCV REQUIRED) 
endif() 
unset(Caffe_OpenCV_CONFIG_PATH) 

endif() endif()

Compute paths

get_filename_component(Caffe_CMAKE_DIR "/home/nikfio/bin/caffe/cmake" PATH)

FIND_PACKAGE(Caffe)

set(Caffe_INCLUDE_DIRS /home/nikfio/bin/caffe/include) list(APPEND Caffe_INCLUDE_DIRS "/usr/include") list(APPEND Caffe_INCLUDE_DIRS "/usr/local/cuda-9.0/include") list(APPEND Caffe_INCLUDE_DIRS "/usr/include/opencv") list(APPEND Caffe_INCLUDE_DIRS "/usr/include/atlas") list(APPEND Caffe_INCLUDE_DIRS "/home/nikfio/bin/caffe/build/src/")

include_directories(${Caffe_INCLUDE_DIRS})

Definitions

set(Caffe_DEFINITIONS "-DUSE_OPENCV;-DUSE_LMDB;-DUSE_LEVELDB")

set(CAFFE_DIR /home/nikfio/bin/caffe)

set(LIBRARY -L${CAFFE_DIR}/build/lib -L/usr/local/Cellar/opencv/2.4.11_1/lib/ -lglog -lprotobuf -lpython2.7 -lcaffe -lm -lpthread -lopencv_core -lopencv_imgproc -lopencv_highgui)

add_executable(ex_logreg_mnist ex_logreg_mnist.cpp)

target_link_libraries(ex_logreg_mnist ${LIBRARY} -lboost_system)

Does someone know why or have a better solution?

Regards

+1

[定義されていない参照/未解決の外部シンボルエラーとは何ですか?どうすれば修正できますか?](https://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-外部記号エラー・アンド・ハウ・ド・イ・フィックス) –

答えて

0

Add to your definitions line the following:

set(Caffe_DEFINITIONS "-DUSE_OPENCV;-DUSE_LMDB;-DUSE_LEVELDB;-DCPU_ONLY=1") 

CPU_ONLY=1は、すべてのGPUコードを正しくコメントアウトする必要があります。