Инициализация DLL.
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 5159
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Инициализация DLL.
Есть приложение с несколькими dll. Но при запуске exe'шника не происходит вызов методов класса инициализации dll. Всё бы ничего (и без них работает), вот только оказалось, что шаблоны закидывают в эти методы некий нужный код (в частности, чтение и запись ini-файла. Вопрос такой - нужно ручками прописывать эту инициализацию или где-то можно указать, чтобы это происходило?
We are hard at work… for you. 

-
- ✯ Ветеран ✯
- Сообщения: 5159
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Инициализация DLL.
В Аpp exe-шника есть только основной фрейм. А все процедуры описаны как External со ссылкой на соответствующую либу.
We are hard at work… for you. 

Re: Инициализация DLL.
Я имел ввиду про подключение (на примере cw5-cw6):
1 вариант: Application - Insert Module - External Lib -
2 вариант: Project - Library, object.. - Add File... -
?
1 вариант: Application - Insert Module - External Lib -
2 вариант: Project - Library, object.. - Add File... -
?
-
- ✯ Ветеран ✯
- Сообщения: 5159
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Инициализация DLL.
1 вариант. По-моему это не важно. Вот приложение, которое превращается в dll, генерит код для инициализации других dll. А основное не генерит.
We are hard at work… for you. 

Re: Инициализация DLL.
Что то я не понял
Вот штатный код при варианте 1 в exe, сгенеренный шаблонами:
Этого нет ?
Вот штатный код при варианте 1 в exe, сгенеренный шаблонами:
Код: Выделить всё
CODE
GlobalErrors.Init
INIMgr.Init('posob.INI')
if exists('POSOB.HLP') then HELP('POSOB.HLP') end
SystemParametersInfo (38, 0, lCurrentFDSetting, 0)
IF lCurrentFDSetting = 1
SystemParametersInfo (37, 0, lAdjFDSetting, 3)
END
w24_0:Init(GlobalErrors, INIMgr) ! Initialise dll (ABC)
w24_1:Init(GlobalErrors, INIMgr) ! Initialise dll (ABC)
w24_2:Init(GlobalErrors, INIMgr) ! Initialise dll (ABC)
w24_3:Init(GlobalErrors, INIMgr) ! Initialise dll (ABC)
Main
INIMgr.Update
w24_0:Kill()
w24_1:Kill()
w24_2:Kill()
w24_3:Kill()
IF lCurrentFDSetting = 1
SystemParametersInfo (37, 1, lAdjFDSetting, 3)
END
INIMgr.Kill
GlobalErrors.Kill
-
- ✯ Ветеран ✯
- Сообщения: 5159
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Инициализация DLL.
Вот то-то и оно. Код сгенерированный С8.9759:
Я и думаю, может где-то надо явно указать, чтобы генерил инициализацию dll.
Код: Выделить всё
CODE
GlobalErrors.Init(GlobalErrorStatus)
FuzzyMatcher.Init ! Initilaize the browse 'fuzzy matcher'
FuzzyMatcher.SetOption(MatchOption:NoCase, 1) ! Configure case matching
FuzzyMatcher.SetOption(MatchOption:WordOnly, 0) ! Configure 'word only' matching
INIMgr.Init('.\Manager.INI', NVD_INI) ! Configure INIManager to use INI file
DctInit
SYSTEM{PROP:Icon} = 'pics\1App.ico'
MainFrame
INIMgr.Update
INIMgr.Kill ! Destroy INI manager
FuzzyMatcher.Kill ! Destroy fuzzy matcher
We are hard at work… for you. 

Re: Инициализация DLL.
В CW6 это Global Properties -> External Module Options -> Standard Clarion Lib/Dll -> On
-
- ✯ Ветеран ✯
- Сообщения: 5159
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Инициализация DLL.
Оказывается, на нужную генерацию влияет галка "Generate Template global data and ABC's as EXTERNAL". Во как! Спасибо всем.
We are hard at work… for you. 
