Имя: Пароль:
1C
 
LoadLibrary("\\Server\NewFolder\My.dll") failed. GetLastError returns 0x0000045a
Ø
0 Davinchi
 
22.07.05
12:08
Господа, несмотря на то, что вопрос не совсем по специфике форума, хочу обратиться к вам за помощью. Проблема следующая: на 98ой винде regsvr32 при регистрации ДЛЛ (ВК для 1С) по сети выдает сообщение как в заголовке темы, как побороть эту проблему в самой ДЛЛ. Такое реально, т.к. я знаю аналогичную ДЛЛ (V7Plus.dll), которая без проблем регится по сени на 98ой винде без проблем...
1 Кирпич
 
22.07.05
13:49
А сервер тоже 98?
2 smaharbA
 
22.07.05
14:04
(0) ты что там хуки ставишь? а путь в длл тот? и как он определяется?
3 Davinchi
 
22.07.05
14:15
(1) сервер Win2003 Server
(2) хуков я там не ставлю, обычная внешняя компонента для 1С...
4 orefkov
 
22.07.05
14:16
0x0000045a="Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL)."
5 Davinchi
 
22.07.05
14:19
(4) я понял что сбой инициализации ДЛЛ. Я так понимаю, что в ДЛЛ самому надо инициализацию отрабатывать если она регится по сети, если да, то где и как???
6 Кирпич
 
22.07.05
14:35
Права на этот файл dll есть у юзера?
(безопасность и тп)
может ему его читать нельзя?
7 Davinchi
 
22.07.05
14:44
с правами юзера все нормально, к таму же на сервере для компов с Вин98 никакого администрирования не настраивалось, и вообще в 98ой винде запретить юзеру что-либо регить помоему врядли возможно...
дело в том, что в этойже конфе я загружаю V7Plus.dll а следом за ней свою ВК, V7Plus регится и грузится нормально, а моя ромпонента вызывает ошибку. Если одна компонента может региться а другая нет, то дело скорее в ней а не в параметрах администрирования...
8 MMF
 
22.07.05
14:51
(7) стало быть ошибка в компоненте. разрегистрируй, поменяй clsid и проверь будет ли она локально грузиться.
9 Мутабор
 
22.07.05
14:51
Локально регится?
10 Davinchi
 
22.07.05
14:54
(8) здраствуй MMF, я те об этой проблеме на мыло мылил...
CLSID - менял несколько раз, и вообще его сама система подбирает так, чтобы он был уникальным но дело не в нем...
локально на любой ОС грузится и работает...
11 Davinchi
 
22.07.05
14:57
локально на любой ОС грузится и работает...
12 Кирпич
 
22.07.05
15:06
(7)Регить тут не причем. Просто DLL не грузится, я так думаю.
Права смотри.
А просто скопировать dll с сервака на 98 комп пробовал?
13 Davinchi
 
22.07.05
15:09
(12) читай внимательно 7
14 Davinchi
 
22.07.05
15:13
копированием с сервака и живу уже четвертый день, для этого и использую V7Plus, чтобы определить версию винды и в зависимости от нее копировати или нет, т.к. на ВинХР все нормально грузится. Меня просто убивает факт использования V7Plus, которая грузится по сети с сервака для того чтобы опредилить как мне грузить свою компоненту...
15 Davinchi
 
22.07.05
15:17
И в варианте с копированием возможно есть слабое место. 1С определит, что необходимо скопировать ВК с сервера, далее выполнит ФС.КопироватьФайл и далее не дожидаясь когда он до конца скопируется может начать гружить ВК, которая скопировалась при последнем запуске 1С и в ней не будет добавлений, которые я вношу - мелочь конешно и мало вероятнаяя, но все же...
16 Кирпич
 
22.07.05
15:19
Да читал я. Там логики нету.
Если одна dll грузится по сети, а другая нет. И обе грузятся нормально локально, то дело не в DLL. До регистрации в реестре даже не доходит.
regsvr32 ее даже не загрузил. Почему не загрузил? Наверное прав нету на чтение файла My.dll.
Ну а если точно есть права, то я не знаю...
17 Davinchi
 
22.07.05
15:27
(16) я сейчас точно проверю наличие всех прав еще раз
18 Davinchi
 
22.07.05
15:36
атрибут "Только чтение" не установлен
regsvr32 сначала выдает:
Программа REGSVR32 вызвала сбой при обращении к странице памяти
в модуле KERNEL32.DLL по адресу 0167:bff9dfff.
Регистры:
EAX=00000000 CS=0167 EIP=bff9dfff EFLGS=00000246
EBX=8173f5dc SS=016f ESP=0056efd4 EBP=00000000
ECX=0000016f DS=016f ESI=00000001 FS=112f
EDX=0056f174 ES=016f EDI=bffca060 GS=0000
Байты по адресу CS:EIP:
cc a1 e0 9c fc bf 8b 00 66 64 f7 05 1c 00 00 00
Содержимое стека:
00a90000 8173f620 81741dd4 81741d80 81741d94 c16f2190 16970000 00000001 00000000 0056f014 bff7b77b bff741f7 bffc9490 bff7b796 bffc9490 00000000
а уже потом, то что в заголовке темы
19 Кирпич
 
22.07.05
15:40
А без REGSVR32 пробовал?
Просто ЗагрузитьВнешнююКомпоненту()
20 MMF
 
22.07.05
15:42
(18) намыль сырцы. Гляну через полчаса.
21 Davinchi
 
22.07.05
15:44
сначала все тоже окошко и информацией из (18)
а потом в окне сообщений 1С
Ошибка при загрузке компоненты \\ZIP\Base1C\TestDb\AsusProc.dll. Компонента не загружена
22 Кирпич
 
22.07.05
15:50
Чота не понял я. То My.dll то AsusProc.dll :(
Ты уж извини, что я тебя долблю этими правами.
Ты сидишь на компе с 98 и можешь свободно копировать dll с сервера на свой 98?
Второй вопрос.
А у тебя в инициализации dll ниче не понаписано?
23 Davinchi
 
22.07.05
15:52
(20) УШЛО!!!
24 Кирпич
 
22.07.05
15:54
А мне вышлешь?
25 Davinchi
 
22.07.05
15:56
(22) Путь "\\Server\NewFolder\My.dll" дан к примеру и большого значения не имеет, реальный путь в (21) есле так легче...
Да я сижу по 98ой и спокойно копирую с сервака все че мне надо. К папре в которой все лежит полный сетевой доступ со всеми разрешениями...
27 Davinchi
 
22.07.05
15:59
(24) мыло давай
28 Кирпич
 
22.07.05
15:59
(26) Ну значит не права :)
Значит понаписал чтото нехорошее...
29 Davinchi
 
22.07.05
16:01
(26) УШЛО!!!
30 Кирпич
 
22.07.05
16:02
мыло в 26
31 MMF
 
22.07.05
16:08
(29) то, что ты написал не является внешней компонентой.
исправь на TAsusProcClass = class(TComObject, IDispatch, IInitDone, ILanguageExtender). Нет, лучше не исправь, а перепиши заново
32 Davinchi
 
22.07.05
16:15
(31) Здрасте, не является, 1С локально с этой ДЛЛ работает же...
TTypedComObject и TComObject не влияют на суть проблемы.
Я делал и с TComObject, и в конце модуля выглядело по другому, примерно вот так:
ComServer.SetServerName('AddIn');
TComObjectFactory.Create(ComServer, TAsusProcClass, CLSID_AsusProcObject, 'AsusProc', 'Extension from ASUS 2005', ciMultiInstance);
и все ровно проблема с загрузкой по сети на 98ой винде так и осталась...
33 MMF
 
22.07.05
16:29
(32) посмотри свой ресурсный файл. Ты там видишь строку с ID 100?
34 Davinchi
 
22.07.05
16:36
Ну и что, строка с ИД 100 используется если в ДЛЛ более одного объекта или если имя объекта не совпадает с именем ДЛЛ без расширения... т.е. 1С при загрузке если не видет этой строки, пытается загрузить объект по имени ДЛЛ, у меня все совпадает...
и был у меня вариант с строкой 100 в ресурсах, на загрузку по сети это не повлияло....
35 Davinchi
 
22.07.05
16:50
а вот эта ссылка никаму никаких идей не подкинет???
http://support.microsoft.com/default.aspx?scid=kb;en-us;174668
36 Davinchi
 
22.07.05
16:58
убегаю с работы, вернусь в форум часа через 2, если что мыльте на мыло!!!
37 Davinchi
 
23.07.05
00:16
UP!!!
38 artbear
 
24.07.05
12:25
(0) Подобное сообщение говорит о том, что у тебя в системе нет (или не зарегистрирована) какой-то длл-ки, которую должна использовать твоя длл.
пройдись по своей длл-ке любым просмотрщиком ресурсов, можно depends.exe или tdump.exe и проверь наличие всех показанных длл-к
39 Кирпич
 
24.07.05
18:52
2 Davinchi
Мож tlb нужно еще рядом с dll положить, раз с tlb сделал.
Мож антивирусы какие...
А вообще, делал бы как все, без творчества... :)
40 trdm
 
24.07.05
19:29
(32)"(31) Здрасте, не является, 1С локально с этой ДЛЛ работает же..."
ну и сделай обработку что-бы при старте 1С эта длл переползала на комп с 98-й виндой и работай себе дальше...
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн