#include <iostream>
#include <Magick++.h>
int main()
{
Magick::InitializeMagick(NULL);
Magick::Image im;
im.read("/home/chase/Desktop/m42.jpg");
im.display();
return 0;
}
当我尝试在eclipse中编译时出现以下错误...
Building file: ../main.cpp
Invoking: GCC C++ Compiler
g++ -std=c++0x -I/usr/include/x86_64-linux-gnu/ImageMagick-6 -I/usr/include/ImageMagick-6 -O0 -g3 -Wall -c -fmessage-length=0 -fopenmp -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.cpp"
Finished building: ../main.cpp
Building target: Stacking
Invoking: GCC C++ Linker
g++ -L../ -o "Stacking" ./main.o -lMagick++-6.Q16 -lMagickWand-6.Q16 -lMagickCore-6.Q16 -lMagick++-6.Q16 -lMagickWand-6.Q16 -lMagickCore-6.Q16
./main.o: In function `main':
/home/chase/workspace/Stacking/Debug/../main.cpp:8: undefined reference to `Magick::Image::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
collect2: error: ld returned 1 exit status
makefile:44: recipe for target 'Stacking' failed
make: *** [Stacking] Error 1
为什么read函数不能编译。我在eclipse中使用了包配置工具来设置Magick ++。另外据我所知,所有其他功能都可以正常工作。我正在使用Ubuntu。我使用sudo apt-get install libmagick ++ - dev。
安装了Magic ++更新: 我得到了它的工作。我升级到g ++ - 5。当我用g ++ - 4.9编译时,它起作用了。想知道为什么它不适用于g ++ - 5?
答案 0 :(得分:3)
为什么read函数不能编译
您的read
函数进行编译。您所拥有的是链接问题。
为什么它不适用于g ++ - 5
由于g++-4.x
和g++-5.x
使用不同的ABI,并且不链接兼容(并且您的libMagick*
库是使用{{构建的1}})。