2015-09-23 71 views
0

我正在編譯Libviso2。即使包含png.h,也存在關於未聲明的標識符png的錯誤。我不確定這裏有什麼問題?C++ PNG中未定義的引用,雖然包含png.h

在它的演示代碼都像

#include <png.h> 
... 
... 
png::image<png::gray_pixel> left_img(left_img_file_name); 

我的CMakeLists.txt去如下

# project 
cmake_minimum_required (VERSION 2.8) 
project (libviso2) 

find_package(PNG REQUIRED) 

# directories 
set (LIBVISO2_SRC_DIR src) 

# include directory 
include_directories(${PNG_INCLUDE_DIRS}) 
include_directories("${LIBVISO2_SRC_DIR}") 

link_directories(${PNG_LIBRARY_DIRS}) 
add_definitions(${PNG_DEFINITIONS}) 

# use sse3 instruction set 
SET(CMAKE_CXX_FLAGS "-msse3") 

# sources 
FILE(GLOB LIBVISO2_SRC_FILES "src/*.cpp") 

# make release version 
set(CMAKE_BUILD_TYPE Release) 

# demo program 
add_executable(viso2 ${LIBVISO2_SRC_FILES}) 
target_link_libraries (viso2 ${PNG_LIBRARY}) 

cmake ../ && make它拋出一堆我有關PNG引用錯誤沒有發現

[ 10%] Building CXX object CMakeFiles/viso2.dir/src/demo.cpp.o 
/Users/pranav/workspace/libviso2/src/demo.cpp:80:7: error: use of undeclared identifier 'png' 
     png::image<png::gray_pixel> left_img(left_img_file_name); 
    ^
/Users/pranav/workspace/libviso2/src/demo.cpp:80:19: error: use of undeclared identifier 'png' 
     png::image<png::gray_pixel> left_img(left_img_file_name); 
       ^

回答

1

png::命名空間似乎來自C++ bindings to PNGpng++.h頭文件。你應該先安裝它。

和一些關於CMake代碼的註釋。根據文檔你應該使用target_link_libraries (viso2 ${PNG_LIBRARIES}),你也可以刪除link_directories調用,因爲CMake會找出需要的標誌。

相關問題