无法在CLion(macOS)上使用CImg打开.png文件

我尝试包括libpng16 / png.h和#define cimg_use_png,但是它们都没有解决错误。另外,我在同一目录中有main.cpp,lenna.jpg和CImg.h。

CMakeLists.txt:

cmake_minimum_required(VERSION 3.6)
project(HelloWorld)

set(CMAKE_CXX_STANDARD 17)

set(SOURCE_FILES main.cpp)
add_executable(HelloWorld ${SOURCE_FILES})

set(YOU_NEED_X11 1)
set(YOU_NEED_PNG 1)

if (${YOU_NEED_PNG} EQUAL 1)
    message(STATUS "Looking for libpng...")
    find_package(PNG REQUIRED)
    include_directories(${PNG_INCLUDE_DIR})
    target_link_libraries (HelloWorld ${PNG_libraRY})
    target_compile_definitions(HelloWorld PRIVATE cimg_use_png=1)
endif()

if (${YOU_NEED_X11} EQUAL 1)
    message(STATUS "Looking for X11...")
    find_package(X11 REQUIRED)
    include_directories(${X11_INCLUDE_DIR})
    target_link_libraries(HelloWorld ${X11_libraRIES})
else()
    target_compile_definitions(HelloWorld PRIVATE cimg_display=0)
endif()

main.cpp:

#include <iostream>
#include "CImg.h"

using namespace cimg_library;

int main() {

    CImg<unsigned char> img("lenna.png");

    int h = img.height();
    int w = img.width();
    int s = img.spectrum();

    std::cout << "h: " << h << " w: " << w << " s: " << s << std::endl;

    return 0;
}

错误:

[CImg] *** CImgIOException *** [instance(0,0x0,non-shared)] CImg<unsigned char>::load(): Failed to open file 'lenna.png'.
libc++abi.dylib: terminating with uncaught exception of type cimg_library::CImgIOException: [instance(0,non-shared)] CImg<unsigned char>::load(): Failed to open file 'lenna.png'.

Process finished with exit code 6
xp10000 回答:无法在CLion(macOS)上使用CImg打开.png文件

似乎没有找到lenna.png。相对路径相对于包含可执行文件的目录。这意味着,如果可执行文件位于cmake-build-debug/HelloWorld,并且您尝试打开lenna.png,则cmake-build-debug/lenna.png处的文件将打开。这意味着您应该手动将lenna.png复制到cmake-build-debug(我不推荐这样做),或者要求CMake为您完成此操作。

将此添加到您的CMakeLists.txt文件中。

add_custom_command(
      TARGET HelloWorld POST_BUILD
      COMMAND ${CMAKE_COMMAND} -E copy
              ${CMAKE_SOURCE_DIR}/lenna.png
              ${CMAKE_BINARY_DIR}/lenna.png
)

这将导致lenna.png在每次编译可执行文件时都复制到与可执行文件相同的目录中。

本文链接:https://www.f2er.com/3112968.html

大家都在问