Инициализация DLL.
Модератор: Дед Пахом
					Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
	При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- 
				kreator
 - ✯ Ветеран ✯
 - Сообщения: 5235
 - Зарегистрирован: 28 Май 2009, 15:54
 - Откуда: Москва
 - Благодарил (а): 11 раз
 - Поблагодарили: 26 раз
 
Инициализация DLL.
Есть приложение с несколькими dll. Но при запуске exe'шника не происходит вызов методов класса инициализации dll. Всё бы ничего (и без них работает), вот только оказалось, что шаблоны закидывают в эти методы некий нужный код (в частности, чтение и запись ini-файла. Вопрос такой - нужно ручками прописывать эту инициализацию или где-то можно указать, чтобы это происходило?
			
			
									
						We are hard at work… for you.   
			
						- 
				kreator
 - ✯ Ветеран ✯
 - Сообщения: 5235
 - Зарегистрирован: 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... -
?
- 
				kreator
 - ✯ Ветеран ✯
 - Сообщения: 5235
 - Зарегистрирован: 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
- 
				kreator
 - ✯ Ветеран ✯
 - Сообщения: 5235
 - Зарегистрирован: 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
			
			
									
						- 
				kreator
 - ✯ Ветеран ✯
 - Сообщения: 5235
 - Зарегистрирован: 28 Май 2009, 15:54
 - Откуда: Москва
 - Благодарил (а): 11 раз
 - Поблагодарили: 26 раз
 
Re: Инициализация DLL.
Оказывается, на нужную генерацию влияет галка "Generate Template global data and ABC's as EXTERNAL". Во как! Спасибо всем.
			
			
									
						We are hard at work… for you.   
			
						