/usr/local/lib に OpenCV2.4.0 のコピーがインストールされています
私のプログラムは正しくコンパイルされましたが、リンカーが呼び出されると、次のようなエラーが発生しました。
/home/zhouw/moos-ivp-zhouw/trunk/src/pATRTest/mst.cpp:661: undefined reference to 'cv::_OutputArray::_OutputArray(cv::Mat const&)'
CMakeFiles/pATR.dir/mst.cpp.o:/home/zhouw/moos-ivp-zhouw/trunk/src/pATRTest/mst.cpp:675: more undefined references to `cv::_OutputArray::_OutputArray(cv::Mat const&)'
collect2: ld returned 1 exit status
make[2]: *** [../bin/pATR] Error 1
make[1]: *** [src/pATRTest/CMakeFiles/pATR.dir/all] Error 2
make: *** [all] Error 2
奇妙なことに、私のプログラムはopencvを集中的に使用しています.CMakeがライブラリを見つけるのに問題がある場合、いくつかのjsutよりもはるかに多くの未定義の参照を訴えるべきでした.
cmake ファイルに LINK_DIRECTORIES("/usr/local/lib") を追加しようとしましたが、役に立ちませんでした。POCO という別のライブラリも /usr/local/lib の下にインストールされています。私のプログラムも POCO ライブラリにリンクしていますが、CMake はそれらを見つけるのに問題はないようです。
-L/usr/local/lib で手動でリンクすると、エラーなく適切にリンクされます。
CMakeLists.txt は次のようになります
PROJECT(pATR)
#what files are needed?
SET(SRCS
spline.hpp
utils.hpp utils.cpp
mst.hpp mst.cpp
cluster.hpp cluster.cpp
target.hpp target.cpp
detector.hpp detector.cpp
classifier.hpp classifier.cpp
atr.hpp atr.cpp
MOOSAtr.h MOOSAtr.cpp
main.cpp
)
ADD_EXECUTABLE(pATR ${SRCS})
# indicate how to link
#LINK_DIRECTORIES("/usr/local/lib")
TARGET_LINK_LIBRARIES(pATR opencv_core opencv_highgui opencv_imgproc MOOS)
INSTALL(TARGETS
pATR
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
)
何が起こっているのか分かりますか?どうもありがとう!