【发布时间】:2019-12-17 16:08:53
【问题描述】:
我正在尝试编译包含“png.h”头文件的openGL文件,
我收到以下错误:
Open GL version 2.1 ATI-3.2.24
libpng warning: Application built with libpng-1.4.12 but running with 1.6.37
error: png_create_read_struct returned 0.
Failed to read image texture from ../images/ceramic.png
我的 Cmakelists.txt 文件:
cmake_minimum_required (VERSION 3.13)
project (teapot)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
find_package(OpenGL REQUIRED)
find_package(GLUT REQUIRED)
find_package(PNG REQUIRED)
include_directories(${PNG_INCLUDE_DIR})
add_executable(teapot teapot.cpp)
target_link_libraries(teapot ${OPENGL_gl_LIBRARY} ${GLUT_LIBRARIES} ${PNG_LIBRARIES} )
set(CMAKE_CXX_FLAGS "-I ${CMAKE_OSX_SYSROOT} ${CMAKE_CXX_FLAGS} -std=c++11")
if (APPLE)
set (CMAKE_CXX_FLAGS "-Wno-deprecated-declarations ${CMAKE_CXX_FLAGS}")
endif ()
set_target_properties(teapot PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED YES
CXX_EXTENSIONS NO
)
cmake 。工作正常,但是当我执行 ./teapot 时发生上述错误。感谢您的帮助!
【问题讨论】:
-
../images/ceramic.png是做什么用的?你确定这个相对路径有效吗? -
这是我要读取的 png 文件的路径,我确定它是有效路径
-
你能检查
${PNG_LIBRARIES}的内容吗?我很确定它将包含一个-L参数,该参数指向一个包含libpng.dylib的目录,该目录与otool -L teapot报告的目录不同 -
你介意我问我如何检查 ${PNG_LIBRARIES} 的内容吗?