для верности перенес весь код в начало программы, чтобы ничего не мешало
Code:
START: ; start of execution
mcall 68,11
stdcall dll.Load,@IMPORT
test eax, eax
jz @f
xor eax,eax
dec eax
int 0x40
@@:
;=================================
and [img_data], 0
invoke file.open, smfn, O_READ
or eax, eax
jz .error
mov [fh], eax
invoke file.size,smfn
mov [img_data_len], ebx
stdcall mem.Alloc, ebx
test eax, eax
jz .error
mov [img_data], eax
invoke file.read, [fh], eax, [img_data_len]
cmp eax, -1
jz .error
cmp eax, [img_data_len]
jnz .error
invoke file.close, [fh]
inc eax
jz .error
;img.decode checks for img.is_img
invoke img.is_img, [img_data], [img_data_len]
or eax, eax
jz .error
;invoke img.decode, [img_data], [img_data_len]; все равно исключеие
or eax, eax
jz .error
jmp @f
.error:
xor eax,eax
dec eax
int 0x40
@@:
в конце написано:
Code:
library \
libini,'libini.obj',\
libio ,'libio.obj',\
libgfx,'libgfx.obj',\
libimg,'libimg.obj',\
libgui,'libgui.obj'
.............................................
import libimg, \
libimg.init , 'lib_init' , \
img.is_img , 'img.is_img' , \
img.to_rgb2 , 'img.to_rgb2', \
img.decode , 'img.decode' , \
img.flip , 'img.flip' , \
img.rotate , 'img.rotate' , \
img.destroy , 'img.destroy'