Page 1 of 1
Алиасы/переименование символов библиотек
Posted: Fri Dec 31, 2021 1:17 pm
by Coldy
При адаптации CLAYER для динамического связывания столкнулся с некоторыми проблемами:
1. Библиотека box_lib.obj имеет функцию рисования edit_box. В CLAYER и в обертках других языков edit_box - это структура, а для рисования edit_box используется алиас edit_box_draw. Если это пытаться переопределять, то появляется конфликт со структурой edit_box. Нужно править код приложений.
Создатели box_lib, очевидно, ошиблись с наименованием этой функции т.к. она действительно должна называться edit_box_draw. Но т.к. предыдущее имя используют много приложений, предлагаю в box_lib добавить алиас edit_box_draw.
2. Библиотека rasterworks.obj имеет функцию cntUTF-8, это не соответствует стандарту имен языка С (и производных от него). В CLAYER используется алиас countUTF8Z, предлагаю также добавить соответствующий символ в rasterworks.obj
В дальнейшем если конфликтные символы будут исправлены во всех приложениях, то их можно исключить из бибилиотек.
Re: Алиасы/переименование символов библиотек
Posted: Sun Jan 02, 2022 8:37 pm
by IgorA
rev
#9568
Переименовал функцию edit_box в edit_box_draw. Многие ассемблерные приложения обновил, но возможно что где-то остались программы использующие функцию edit_box для рисования. Потому для обратной совместимости в экспорте библиотеки box_lib сделал 2 функции edit_box_draw и edit_box.
Re: Алиасы/переименование символов библиотек
Posted: Fri Jan 14, 2022 6:48 am
by akron1
Coldy wrote:2. Библиотека rasterworks.obj имеет функцию cntUTF-8, это не соответствует стандарту имен языка С (и производных от него). В CLAYER используется алиас countUTF8Z, предлагаю также добавить соответствующий символ в rasterworks.obj
Сделано (r9631).
Re: Алиасы/переименование символов библиотек
Posted: Fri Jan 14, 2022 9:24 am
by turbocat
Может быть я не шарю... Но зачем ещё одна метка? Мне кажется этого достаточно....
Code: Select all
@EXPORT:
export drawText, 'drawText', \
countUTF8Z, 'cntUTF-8', \ ;old function name
countUTF8Z, 'countUTF8Z', \
charsFit, 'charsFit', \
stringWidth, 'strWidth'
Re: Алиасы/переименование символов библиотек
Posted: Fri Jan 14, 2022 10:27 am
by akron1
turbocat wrote:Может быть я не шарю... Но зачем ещё одна метка? Мне кажется этого достаточно....
Да я сам не шарю. Но Fasm говорит: "символ уже определен" и не компилирует.
Re: Алиасы/переименование символов библиотек
Posted: Fri Jan 14, 2022 10:43 am
by turbocat
Да действительно. Видимо макрос кривой
Re: Алиасы/переименование символов библиотек
Posted: Fri Jan 14, 2022 3:32 pm
by ProMiNick
Fasm говорит: "символ уже определен" и не компилирует.
делов то...
вместо
Code: Select all
macro export [name,sname]
{ common local ..export
;align 16
..export:
public ..export as 'EXPORTS'
forward
dd __#name#_export_name__,name
common
dd 0
forward
;align 4
__#name#_export_name__ db sname,0
}
вот это
Code: Select all
macro export [name,sname]
{ common local ..export
;align 16
..export:
public ..export as 'EXPORTS'
forward
local ..expname
dd ..expname,name
common
dd 0
forward
;align 4
..expname db sname,0
}
Re: Алиасы/переименование символов библиотек
Posted: Sat Jan 15, 2022 9:14 am
by akron1
ProMiNick
Я в этих макросах ничего не понимаю и вообще впервые правлю программу на fasm'е в SVN. Но: новое имя функции добавлено (и уже использовано), старое сохранено. Исправлен только один файл, ничего больше не затронуто. Библиотека работает. Задача решена. Если кто-то может сделать лучше, то пожалуйста, я, конечно, не возражаю, тем более это не моя программа.
Re: Алиасы/переименование символов библиотек
Posted: Sat Jan 15, 2022 11:27 am
by Coldy
akron1, все правильно сделал. Старое имя пока нужно, т.к. оно используется в других программах (например, видел в с--). Если везде переименовать, то старое имя можно будет удалить.