我正在尝试使用CLion和Magick ++ 7创建一个简单的图像转换器。
我已经使用官方指南安装了Magick ++,并且“identify -version”显示了ImageMagick 7.0.7-25。
但是,当我尝试使用Magick :: ReadOptions和Magick :: Image :: quality时,我得到一个引用错误:
对'Magick :: ReadOptions :: ReadOptions()'的未定义引用 未定义引用'Magick :: ReadOptions :: quiet(bool)'
未定义引用'Magick :: Image :: quality(unsigned long)' 未定义的引用'Magick :: ReadOptions :: ~ReadOptions()'
未定义引用'Magick :: ReadOptions :: ~ReadOptions()'
这是我的CMakeLists:
cmake_minimum_required(VERSION 3.9)
project(zosia_konwerter)
set(CMAKE_CXX_STANDARD 17)
add_executable(zosia_konwerter main.cpp)
add_definitions( -DMAGICKCORE_QUANTUM_DEPTH=16 )
add_definitions( -DMAGICKCORE_HDRI_ENABLE=0 )
find_package(ImageMagick REQUIRED COMPONENTS Magick++ MagickWand MagickCore)
include_directories(${ImageMagick_INCLUDE_DIRS})
link_directories(${ImageMagick_INCLUDE_DIRS})
target_link_libraries(zosia_konwerter ${ImageMagick_LIBRARIES})
find_package(Boost)
IF (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIR})
endif()
set (Boost_USE_STATIC_LIBS OFF) # enable dynamic linking
set (Boost_USE_MULTITHREAD ON) # enable multithreading
find_package (Boost COMPONENTS REQUIRED chrono filesystem)
target_link_libraries (zosia_konwerter ${Boost_LIBRARIES})
c ++中的代码非常简单:
#include <boost/filesystem.hpp>
#include <Magick++.h>
#include <string>
std::string src="src/", res="res/";
int main(int argc,char **argv) {
Magick::InitializeMagick(*argv);
Magick::ReadOptions options;
options.quiet(true);
Magick::Image image;
for(auto &p : boost::filesystem::directory_iterator(src)) {
image.read(p.path().string());
image.resize("800x800>");
image.quality(85);
image.write(res+p.path().stem().string()+".jpg");
}
}