gpt4 book ai didi

尽管包含 png.h,但 PNG 中的 c++ undefined reference

转载 作者:行者123 更新时间:2023-11-28 06:04:12 25 4
gpt4 key购买 nike

我正在尝试编译 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 ../&& 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);
^

最佳答案

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

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

关于尽管包含 png.h,但 PNG 中的 c++ undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32730161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com