EXP-files

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Добрый день

Есть класс

Код: Выделить всё

MyClass   CLASS,TYPE,MODULE('file.clw'),LINK('file.clw')
Init                PROCEDURE(STRING s)
Prepare         PROCEDURE(QUEUE Q)
                END
Хочу экспортировать его методы.
Вот досюда знаю, как оформить EXP:

Код: Выделить всё

LIBRARY mylib
EXETYPE WINDOWS
 
EXPORTS
  VMT$MYClASS                  @?
  TYPE$MYClASS                 @?
;
  INIT@F15MYCLASSSB              @?
А как описать процедуру с параметром QUEUE? Или нельзя, а надо пользоваться адресами?
И вот эти @F15... Число 15 подобрал путем перебора. Можно его узнать заранее? В МСДН не нашёл.

С уважением, Михаил

(Добавление)

Посмотри приложение в каталоге Examples\Src\Pro2Exp - там процедурка специально для этой цели. А Class.Method(....) можно рассматривать как Method(*Class,...)

---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439

Спасибо

Михаил

И ещё пара маленьких советов

1. Посмотреть Map-файл после компиляции. Там тоже можно найти нужную информацию.

2.Сделать .Inc файл для подключения класса и попробовать использовать, тогда сразу получишь имена неразрешённых ссылок на методы.

---------------------------------------
C уважением,
Юрий Философов

(Добавление)
И вот эти @F15... Число 15 подобрал путем перебора.
Это число - количество символов, составляющих имя класса.
Можно его узнать заранее?
Можно.
Ниже пример шаблона. Ключевое слово LINKNAME.
Группа %UpdateExpFile добавляет в exp-файл имя понятное линкеру
типа:

Код: Выделить всё

    SOMEMETHOD@F9SOMECLASSUc   -> SomeClass.SomeMethod(BYTE)

#CALL(%UpdateExpFile,'$' & UPPER(%ObjectOfSomeClass),%False)
#CALL(%UpdateExpFile,'VMT$' & UPPER(%SomeClass),%False)
#CALL(%UpdateExpFile,'TYPE$' & UPPER(%SomeClass),%False)
#CALL(%UpdateExpFile,'Method1(PARA,ME,TERS)')
....
#CALL(%UpdateExpFile,'MethodN(PARA,ME,TERS)')

#GROUP(%UpdateExpFile,%ExpLine,%UseLinkName = %True)
  #SET(%ExpLineNumber,%ExpLineNumber + 1)
  #IF(%UseLinkName)
  %(LINKNAME(%ExpLine,%SomeClassClass)) @%ExpLineNumber
  #ELSE
  %ExpLine @%ExpLineNumber
  #ENDIF
    
%(LINKNAME(%Procedure & %Prototype)) @%ExpLineNumber
В МСДН не нашёл.
И не найдешь :)

Алексей,
начальник отдела ПТО
ООО "ОРК"

mail: alex@jrcn.donetsk.ua, icq: 62605472
www: http://atinet.hypermart.net
http://www.nikasoft.co.uk
http://www.clarionline.h1.ru (FAQ-онлайн)
irc: irc.lucky.net:6669, channel #clarion, Bambino
origin: ...Как правы те, кто запирает на ночь...

(Добавление)
Это число - количество символов, составляющих имя класса.
Гм... мог бы и сам догадаться ;)
И не найдешь :)
Да, всё, что я там нашёл, это отсылка к опциям линкера VC, видимо, он сам
генерит, что нужно.

Спасибо, всё стало проясняться

Михаил
Написал: ClaList(2)
Ответить