Page 1 of 1

unable to run wand.c

Posted: 2008-01-09T03:16:30-07:00
by bagi
I am using ImageMagick-6.3.7-Q16(6.3.7.8 installable) and VC6 for compiling the C code "wand.c" available in www/magick-wand.html.

#include <stdio.h>
#include <stdlib.h>
#include <wand/MagickWand.h>

int main(int argc,char **argv)
{
#define ThrowWandException(wand) \
{ \
char \
*description; \
\
ExceptionType \
severity; \
\
description=MagickGetException(wand,&severity); \
(void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \
description=(char *) MagickRelinquishMemory(description); \
exit(-1); \
}

MagickBooleanType
status;

MagickWand
*magick_wand;

if (argc != 3)
{
(void) fprintf(stdout,"Usage: %s image thumbnail\n",argv[0]);
exit(0);
}
/*
Read an image.
*/
MagickWandGenesis();
magick_wand=NewMagickWand();
status=MagickReadImage(magick_wand,argv[1]);
if (status == MagickFalse)
ThrowWandException(magick_wand);
/*
Turn the images into a thumbnail sequence.
*/
MagickResetIterator(magick_wand);
while (MagickNextImage(magick_wand) != MagickFalse)
MagickResizeImage(magick_wand,106,80,LanczosFilter,1.0);
/*
Write the image then destroy it.
*/
status=MagickWriteImages(magick_wand,argv[2],MagickTrue);
if (status == MagickFalse)
ThrowWandException(magick_wand);
magick_wand=DestroyMagickWand(magick_wand);
MagickWandTerminus();
return(0);
}

After including the include/magick, include/magick++, include/wand, include, lib as additional include libraries also i am unable to build the code. please there are no compilation errors.

Linking...
temp.obj : error LNK2001: unresolved external symbol _MagickWandTerminus
temp.obj : error LNK2001: unresolved external symbol _DestroyMagickWand
temp.obj : error LNK2001: unresolved external symbol _MagickWriteImages
temp.obj : error LNK2001: unresolved external symbol _MagickResizeImage
temp.obj : error LNK2001: unresolved external symbol _MagickNextImage
temp.obj : error LNK2001: unresolved external symbol _MagickResetIterator
temp.obj : error LNK2001: unresolved external symbol _MagickRelinquishMemory
temp.obj : error LNK2001: unresolved external symbol _MagickGetException
temp.obj : error LNK2001: unresolved external symbol _MagickReadImage
temp.obj : error LNK2001: unresolved external symbol _NewMagickWand
temp.obj : error LNK2001: unresolved external symbol _MagickWandGenesis
Debug/temp.exe : fatal error LNK1120: 11 unresolved externals
Error executing link.exe.

temp.exe - 12 error(s), 0 warning(s)

the Magick++_Demo.dsw could be build but on running it crashes without producing any output file.

Re: unable to run wand.c

Posted: 2008-01-09T07:12:45-07:00
by magick
You need to link to the Wand library. We don't have VS 6 so we cannot explain the crash you are getting. We tried with VS 7 and the Magick++ demos ran without complaint.

Re: unable to run wand.c

Posted: 2008-01-09T22:22:54-07:00
by bagi
The code that I am running now:

#include <stdio.h>
#include <stdlib.h>
#include <wand/MagickWand.h>

int main(int argc,char **argv)
{
#define ThrowWandException(wand)
{
char *description;

ExceptionType severity;

description = MagickGetException(wand, &severity);
(void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description);
description = MagickRelinquishMemory(description);
exit(-1);
}

MagickBooleanType status;

MagickWand *magick_wand;

if (argc != 3)
{
(void) fprintf(stdout,"Usage: %s image thumbnail\n",argv[0]);
exit(0);
}

/* Read an image. */
MagickWandGenesis();
magick_wand = NewMagickWand();
status = MagickReadImage(magick_wand,argv[1]);
if (status == MagickFalse)
ThrowWandException(magick_wand);

/* Turn the images into a thumbnail sequence. */
MagickResetIterator(magick_wand);
while (MagickNextImage(magick_wand) != MagickFalse)
MagickResizeImage(magick_wand,106,80,LanczosFilter,1.0);

/* Write the image then destroy it. */
status = MagickWriteImages(magick_wand,argv[2],MagickTrue);
if (status == MagickFalse)
ThrowWandException(magick_wand);
magick_wand = DestroyMagickWand(magick_wand);
MagickWandTerminus();
return(0);
}

Additional Include Directories: (Microsoft Visual C++ 6.0)
C:\Program Files\ImageMagick-6.3.7-Q16\include,
C:\Program Files\ImageMagick-6.3.7-Q16\lib


The compilation errors which I get

Compiling...
Text1.c
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(13) : error C2065: 'wand' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(13) : warning C4047: 'function' : 'const struct _MagickWand *' differs in levels of indirection from 'int '
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(13) : warning C4024: 'MagickGetException' : different types for formal and actual parameter 1
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(19) : error C2275: 'MagickBooleanType' : illegal use of this type as an expression
c:\program files\imagemagick-6.3.7-q16\include\magick\magick-type.h(168) : see declaration of 'MagickBooleanType'
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(19) : error C2146: syntax error : missing ';' before identifier 'status'
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(19) : error C2065: 'status' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(21) : error C2275: 'MagickWand' : illegal use of this type as an expression
c:\program files\imagemagick-6.3.7-q16\include\wand\magickwand.h(136) : see declaration of 'MagickWand'
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(21) : error C2065: 'magick_wand' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(31) : warning C4047: '=' : 'int ' differs in levels of indirection from 'struct _MagickWand *'
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(32) : warning C4047: 'function' : 'struct _MagickWand *' differs in levels of indirection from 'int '
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(32) : warning C4024: 'MagickReadImage' : different types for formal and actual parameter 1
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(37) : warning C4047: 'function' : 'struct _MagickWand *' differs in levels of indirection from 'int '
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(37) : warning C4024: 'MagickResetIterator' : different types for formal and actual parameter 1
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(38) : warning C4047: 'function' : 'struct _MagickWand *' differs in levels of indirection from 'int '
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(38) : warning C4024: 'MagickNextImage' : different types for formal and actual parameter 1
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(39) : warning C4047: 'function' : 'struct _MagickWand *' differs in levels of indirection from 'int '
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(39) : warning C4024: 'MagickResizeImage' : different types for formal and actual parameter 1
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(42) : warning C4047: 'function' : 'struct _MagickWand *' differs in levels of indirection from 'int '
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(42) : warning C4024: 'MagickWriteImages' : different types for formal and actual parameter 1
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(45) : warning C4047: 'function' : 'struct _MagickWand *' differs in levels of indirection from 'int '
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(45) : warning C4024: 'DestroyMagickWand' : different types for formal and actual parameter 1
C:\Program Files\Microsoft Visual Studio\MyProjects\Text1.c(45) : warning C4047: '=' : 'int ' differs in levels of indirection from 'struct _MagickWand *'
Error executing cl.exe.

Text1.obj - 6 error(s), 16 warning(s)

Re: unable to run wand.c

Posted: 2008-01-09T22:46:13-07:00
by magick
C defines require a backslash for line continuation. See your ThrowWandException macro.

Re: unable to run wand.c

Posted: 2008-01-09T23:27:50-07:00
by bagi
Thanks, that removed all the errors and I could run the file :D

The only thing now remaining is i am unable to understand the arguments in int main(int argc, char **argv )

The output is Usage: C:\Program Files\Microsoft Visual Studio\MyProjects\Debug\Temp1.exe image thumbnail

how do i give a file as an input and get the output?

Re: unable to run wand.c

Posted: 2008-01-09T23:48:48-07:00
by bagi
I could figure it out, Thanks!!! :D

Re: unable to run wand.c

Posted: 2008-10-13T01:49:49-07:00
by stotro
sorry for digging this out, but i have not the same, but a similiar problem:

Code: Select all

#include "main.h"

#include <stdio.h>
#include <stdlib.h>
#include <wand/MagickWand.h>



int main()
{
	start();
	#define ThrowWandException(wand) \
{ \
  char \
    *description; \
 \
  ExceptionType \
    severity; \
 \
  description=MagickGetException(wand,&severity); \
  (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \
  description=(char *) MagickRelinquishMemory(description); \
  exit(-1); \
}
	MagickWand *test;

	return 0;
}
1>.\main.c(29) : error C2275: 'MagickWand' : illegal use of this type as an expression
1> C:\ImageMagick\include\wand/MagickWand.h(144) : see declaration of 'MagickWand'
1>.\main.c(29) : error C2065: 'test' : undeclared identifier
i think the library is working because it doesn throw up any errors for the include & the exception definition..
any suggestions?

thanks

Re: unable to run wand.c

Posted: 2008-10-13T06:11:23-07:00
by magick
We tried your code with ImageMagick 6.4.4-5, the latest release and it compiled without complaint (when we included a mock main() method). Its possible your version of ImageMagick is too old to support the MagickWand API.

Re: unable to run wand.c

Posted: 2008-10-14T04:05:11-07:00
by stotro
i solved the problem. i was using the newest version anyway, but the type of my visual studio project wasnt declared als multi threaded dll..
now it works fine.