使用Magick ++和openMPI编译c ++代码

时间:2015-01-26 11:39:55

标签: c++ imagemagick openmpi magick++

我试图使用Magick++库来编译我的C ++代码,以便使用openMPI以分布式方式处理图像,当我尝试编译它时会出现一些错误。

这是我的代码:

#include "mpi.h"
#include <stdio.h>
#include <iostream>
#include <Magick++.h>
using namespace std; 
using namespace Magick; 

int main(int argc, char **argv){

int rank, numtask;

InitializeMagick(*argv);

Image image;
try { 
    // Read a file into image object 
    image.read( "test_image.jpg" );
    image.type( GrayscaleType );
    Blob blob; 
    image.magick( "JPEG" ); // Set JPEG output format 
    image.write( &blob );

} 
catch( Exception &error_ ){ 
    cout << "Caught exception: " << error_.what() << endl; 
    return 1; 
 } 

//Now in the "distributed enviroment" I just print an hello world to test it. 
MPI_Init(&argc,&argv);

MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &numtask);

cout<<"HelloWorld\n";

MPI_Finalize();

}

这是我在shell上输入的命令

mpiCC openmpi_project.cc -o openmpi_project

这是shell的输出

  

openmpi_project.cc :(。text + 0x1d):未定义的引用   &#34; Magick :: InitializeMagick(char const *)&#34;

     

openmpi_project.cc :(。text + 0x29):未定义的引用   &#34; Magick ::图像::图片()&#34;

     

openmpi_project.cc :(。text + 0x5d):未定义引用   &#34; Magick :: Image :: read(std :: string const&amp;)&#34;

     

openmpi_project.cc :(。text + 0x86):未定义的引用   &#34; Magick ::图像::类型(MagickCore将ImageType ::)&#34;

     

openmpi_project.cc :(。text + 0x92):rundefined reference to   &#34; Magick ::斑点::斑点()&#34;

     

openmpi_project.cc :(。text + 0xc6):未定义引用   &#34; Magick :: Image :: magick(std :: string const&amp;)&#34;

     

openmpi_project.cc :(。text + 0xf1):未定义的引用   &#34; Magick ::图像::写(Magick ::斑点*)&#34;

     

openmpi_project.cc :(。text + 0xfd):未定义的引用   &#34; Magick ::斑点::〜斑点()&#34;

     

openmpi_project.cc :(。text + 0x158):未定义引用   &#34; Magick ::图片::〜图片()&#34;

     

openmpi_project.cc :(。text + 0x1d3):未定义的引用   &#34; Magick ::斑点::〜斑点()&#34;

     

openmpi_project.cc :(。text + 0x261):未定义引用   &#34; Magick ::图片::〜图片()&#34;

     

/tmp/ccqFzUdy.o :(。gcc_except_table + 0x58):未定义的引用   &#34; Magick的类型信息::例外&#34;

1 个答案:

答案 0 :(得分:2)

ImageMagick附带配置实用程序。对于Magick ++,此实用程序为Magick++-config。请参阅the API docs下的使用子部分。

LDFLAGS=$(Magick++-config --ldflags)
CXXFLAGS=$(Magick++-config --cxxflags)
$(CC) $CXXFLAGS openmpi_project.cc $LDFLAGS -o openmpi_project

跳转到MPI compiling/linking docs,并将Magick ++的其他标志集成到mpiCC

LDFLAGS=$(Magick++-config --ldflags)
CXXFLAGS=$(Magick++-config --cxxflags)
mpiCC --with-wrapper-cxxflags=$CXXFLAGS openmpi_project.cc \
      --with-wrapper-ldflags=$LDFLAGS -o openmpi_project