При адаптации 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
В дальнейшем если конфликтные символы будут исправлены во всех приложениях, то их можно исключить из бибилиотек.
Алиасы/переименование символов библиотек
rev #9568
Переименовал функцию edit_box в edit_box_draw. Многие ассемблерные приложения обновил, но возможно что где-то остались программы использующие функцию edit_box для рисования. Потому для обратной совместимости в экспорте библиотеки box_lib сделал 2 функции edit_box_draw и edit_box.
Переименовал функцию edit_box в edit_box_draw. Многие ассемблерные приложения обновил, но возможно что где-то остались программы использующие функцию edit_box для рисования. Потому для обратной совместимости в экспорте библиотеки box_lib сделал 2 функции edit_box_draw и edit_box.
Сделано (r9631).Coldy wrote:2. Библиотека rasterworks.obj имеет функцию cntUTF-8, это не соответствует стандарту имен языка С (и производных от него). В CLAYER используется алиас countUTF8Z, предлагаю также добавить соответствующий символ в rasterworks.obj
Может быть я не шарю... Но зачем ещё одна метка? Мне кажется этого достаточно....
Code: Select all
@EXPORT:
export drawText, 'drawText', \
countUTF8Z, 'cntUTF-8', \ ;old function name
countUTF8Z, 'countUTF8Z', \
charsFit, 'charsFit', \
stringWidth, 'strWidth'
Изобретайте колёса каждый раз, когда хотите написать новую программу.
Да я сам не шарю. Но Fasm говорит: "символ уже определен" и не компилирует.turbocat wrote:Может быть я не шарю... Но зачем ещё одна метка? Мне кажется этого достаточно....
Да действительно. Видимо макрос кривой
Изобретайте колёса каждый раз, когда хотите написать новую программу.
делов то...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
}
ProMiNick
Я в этих макросах ничего не понимаю и вообще впервые правлю программу на fasm'е в SVN. Но: новое имя функции добавлено (и уже использовано), старое сохранено. Исправлен только один файл, ничего больше не затронуто. Библиотека работает. Задача решена. Если кто-то может сделать лучше, то пожалуйста, я, конечно, не возражаю, тем более это не моя программа.
Я в этих макросах ничего не понимаю и вообще впервые правлю программу на fasm'е в SVN. Но: новое имя функции добавлено (и уже использовано), старое сохранено. Исправлен только один файл, ничего больше не затронуто. Библиотека работает. Задача решена. Если кто-то может сделать лучше, то пожалуйста, я, конечно, не возражаю, тем более это не моя программа.
akron1, все правильно сделал. Старое имя пока нужно, т.к. оно используется в других программах (например, видел в с--). Если везде переименовать, то старое имя можно будет удалить.
Who is online
Users browsing this forum: No registered users and 3 guests