Hi
I'm trying to compile this code and am having errors
C:\masm32\source\teste.asm(15) : error A2163: non-benign structure redefinition: incorrect initializers : ImageCodecInfo
C:\masm32\source\teste.asm(16) : error A2163: non-benign structure redefinition: incorrect initializers : ImageCodecInfo
C:\masm32\source\teste.asm(28) : error A2161: non-benign structure redefinition: too few labels : ImageCodecInfo
(http://overpic.net/viewer.php?file=xf0j0de7aeba1zprtl56.jpg)
Here's the code:
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
include \masm32\include\masm32rt.inc
include \masm32\include\gdiplus.inc
includelib \masm32\lib\gdiplus.lib
GdiplusStartupInput STRUCT
GdiplusVersion DWORD ?
DebugEventCallback DWORD ?
SuppressBackgroundThread DWORD ?
SuppressExternalCodecs DWORD ?
GdiplusStartupInput ENDS
ImageCodecInfo STRUCT
ClassID CLSID <>
FormatID GUID <>
CodecName DWORD ?
DllName DWORD ?
FormatDescription DWORD ?
FilenameExtension DWORD ?
MimeType DWORD ?
Flags DWORD ?
Version DWORD ?
SigCount DWORD ?
SigSize DWORD ?
SigPattern DWORD ?
SigMask DWORD ?
ImageCodecInfo ENDS
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
.data
token dd 0
image dd 0
numEncoders dd 0
sizeImageCodecInfo dd 0
pImageCodecInfo dd 0
gdipsi GdiplusStartupInput <1> ; version must be 1
.code
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
start:
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
print "GdiplusStartup rv "
invoke GdiplusStartup, ADDR token, ADDR gdipsi, NULL
print ustr$(eax),13,10
print "GdipLoadImageFromFile rv "
invoke GdipLoadImageFromFile, uni$("sample.bmp"), ADDR image
print ustr$(eax),13,10
print "GdipGetImageEncodersSize rv "
invoke GdipGetImageEncodersSize, ADDR numEncoders,
ADDR sizeImageCodecInfo
print ustr$(eax),13,10
print "numEncoders "
print ustr$(numEncoders),13,10
print "sizeImageCodecInfo "
print ustr$(sizeImageCodecInfo)," bytes",13,10
mov pImageCodecInfo, alloc(sizeImageCodecInfo)
print "GdipGetImageEncoders rv "
invoke GdipGetImageEncoders, numEncoders, sizeImageCodecInfo,
pImageCodecInfo
print ustr$(eax),13,10
xor ebx, ebx
mov esi, pImageCodecInfo
.WHILE ebx < numEncoders
invoke crt_printf, chr$("%S%c"), [esi].ImageCodecInfo.MimeType, 10
.IF ucmp$([esi].ImageCodecInfo.MimeType, uni$("image/jpeg") )
print "GdipSaveImageToFile rv "
invoke GdipSaveImageToFile, image, uni$("sample.jpg"),
esi, NULL
print ustr$(eax),13,10
.ENDIF
add esi, SIZEOF ImageCodecInfo
inc ebx
.ENDW
print "GdipDisposeImage rv "
invoke GdipDisposeImage, image
print ustr$(eax),13,10
print "GdiplusShutdown rv "
invoke GdiplusShutdown, token
print ustr$(eax),13,10
free pImageCodecInfo
inkey "Press any key to exit..."
exit
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
end start
I tried changing the lines
ImageCodecInfo STRUCT
ClassID CLSID <>
FormatID GUID <>
...
here for these
ImageCodecInfo STRUCT
ClassID CLSID <?>
FormatID GUID <?>
...
and continues giving error
Are there any missing some reference file *.inc or *.lib ?
I appreciate any help
(I use Masm32 vrs8, win XP)
(The erro ML erro:
A2161 non-benign structure redefinition : too few labels
Not enough members were defined in a structure redefinition.
A2163 non-benign structure redefinition : incorrect initializers
A STRUCT or UNION was redefined with a different initializer value. )
You are redefining the two structures - delete/comment them out and it works. The declaration can be found in windows.inc.
nice too
It is true
Thank you,
http://overpic.net/viewer.php?file=xethdvbwp4hk5cn0k54re.jpg
This doubled!
There is a struct file windows.inc
I remarked in my struct file and compiled.