【问题标题】:c++ Undefined references in PNG although png.h includedc++ 在 PNG 中未定义的引用,尽管 png.h 包括在内
【发布时间】:2015-09-23 02:45:39
【问题描述】:

我正在尝试编译Libviso2。即使包含png.h,也有关于未声明标识符png的错误。我不确定这里有什么问题?

其中的演示代码类似于

#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 ../ &amp;&amp; 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);
                  ^

【问题讨论】:

    标签: c++ cmake png homebrew


    【解决方案1】:

    png:: 命名空间似乎来自C++ bindings to PNGpng++.h 头文件。你应该先安装它。

    还有一些关于 CMake 代码的注释。根据文档你应该使用target_link_libraries (viso2 ${PNG_LIBRARIES}),你也可以删除link_directories调用,因为CMake会找出需要的标志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-01
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 2017-04-17
      • 2017-09-01
      • 1970-01-01
      相关资源
      最近更新 更多