Происходит ошибка при компиляции — COM компилируется в VB 6.0 sp5..., а в последний момент отваливается с ошибкой линкера:
---
Microsoft (R) Incremental Linker Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
LINK : fatal error LNK1104: cannot open file "C:\Projects\iXML\iXML.dll"
---
ActiveX DLL, бинарная совместимость.
Причем это появилось не с разу, а как то раз... уже на паре проектов такое. Компилял и после перезагрузки.
Имеющаяся откомпиленная DLL регестрится и разрегистряется через regsvr32 без проблемм.
А есть еще один глюк — обратный — еще на двух проектах — откомпилированные DLL (также ActiveX DLL, бинарная совместимость) не регистрируются и не разрегистрируются через regsvr32 — выводится ошибка:
---
URL.dll was loaded, but the DllRegisterServer entry point was not found.
This file can not be registered.
---
И такая же ошибка при разрегистрации, только соответственно DllUnregisterServer функцию не находит.
Тоже появилось каким то образом в неопределенный момент...Перекомпиляция не помогает.
Но зарегистрировать их можно откомпиляв в VB (он же при компиляции регестрит).
Здравствуйте AsM2, Вы писали:
AM>Происходит ошибка при компиляции — COM компилируется в VB 6.0 sp5..., а в последний момент отваливается с ошибкой линкера: AM>--- AM>Microsoft (R) Incremental Linker Version 6.00.8447 AM>Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
AM>LINK : fatal error LNK1104: cannot open file "C:\Projects\iXML\iXML.dll" AM>--- AM>ActiveX DLL, бинарная совместимость. AM>Причем это появилось не с разу, а как то раз... уже на паре проектов такое. Компилял и после перезагрузки. AM>Имеющаяся откомпиленная DLL регестрится и разрегистряется через regsvr32 без проблемм.
По-видимому, твоя DLL используется каким-то приложением или как сервер объекта или как TLB (библиотека типов) объекта. Нужно найти такое приложение и заставить его отпустить DLL. Это уже зависит от того, где используется твой объект.
AM>А есть еще один глюк — обратный — еще на двух проектах — откомпилированные DLL (также ActiveX DLL, бинарная совместимость) не регистрируются и не разрегистрируются через regsvr32 — выводится ошибка: AM>--- AM>URL.dll was loaded, but the DllRegisterServer entry point was not found.
AM>This file can not be registered. AM>--- AM>И такая же ошибка при разрегистрации, только соответственно DllUnregisterServer функцию не находит. AM>Тоже появилось каким то образом в неопределенный момент...Перекомпиляция не помогает. AM>Но зарегистрировать их можно откомпиляв в VB (он же при компиляции регестрит).
Если имеешь ввиду URL.dll из WinXXX\System32 директория, то всё правильно — у неё нет этих функций. А если имеешь ввиду свою, то это нескромно и лучше переименовать её из-за коллизий с Microsoft-овской конкуренткой. Не Microsoft-у же переименовывать!
Здравствуйте Vi2, Вы писали:
Vi2>Здравствуйте AsM2, Вы писали:
AM>>Происходит ошибка при компиляции — COM компилируется в VB 6.0 sp5..., а в последний момент отваливается с ошибкой линкера:
Vi2>По-видимому, твоя DLL используется каким-то приложением или как сервер объекта или как TLB (библиотека типов) объекта. Нужно найти такое приложение и заставить его отпустить DLL. Это уже зависит от того, где используется твой объект.
a) Разрегистрируем DLL
b) Проверяем в OLE View — точно разрегестрировали, больше записей нет
c) Перезагружаемся
Сразу после этого пытаюсь откомпилировать — тоже самое :(
Место на диске есть, на файл full control для everyone.
AM>>А есть еще один глюк — обратный — еще на двух проектах — откомпилированные DLL (также ActiveX DLL, бинарная совместимость) не регистрируются и не разрегистрируются через regsvr32 — выводится ошибка:
Vi2>Если имеешь ввиду URL.dll из WinXXX\System32 директория, то всё правильно — у неё нет этих функций. А если имеешь ввиду свою, то это нескромно и лучше переименовать её из-за коллизий с Microsoft-овской конкуренткой.
Dll моя. Стал скромнее — dll переименовал — все заработало!
Действительно, так и есть, при регистрации я не указывал абсолютный путь и файл брался из системной директории, т.е. не мой. VB после компиляции при регестрации, как видно, использут абсолютный путь.
Здравствуйте AsM2, Вы писали:
AM>Здравствуйте Vi2, Вы писали:
Vi2>>Здравствуйте AsM2, Вы писали:
AM>>>Происходит ошибка при компиляции — COM компилируется в VB 6.0 sp5..., а в последний момент отваливается с ошибкой линкера:
Данная ошибка происходит только если выбрана бинарная совместимость.
Да и если dll занята (используется) VB ругается "Permission denied" перед компиляцией.
Пробовал удалить старую dll и после этого скомпилировать без совместимости — нормально, но как только ставлю бинарную совместимость для этой новой dll — снова не могу скомпилировать — все та же старая ошибка.
Вирусов вроде нет — проверял, да и остальное же нормально работает.
В этом проекте был циклический референс — убрал — не помогло, да и другая dll, участвующая в этом циклическом референсе, компилируется нормально.
На другой машине такая же история — скопировал проект, окомпилил, попытался откомпилить еще с бинарной совместимостью — нету.
Здравствуйте AsM2, Вы писали:
AM>Пробовал удалить старую dll и после этого скомпилировать без совместимости — нормально, но как только ставлю бинарную совместимость для этой новой dll — снова не могу скомпилировать — все та же старая ошибка.
А вот это уже чисто VBшный приблуд — ничего ты тут не сделаешь.
VB какимто образом сам на себя "запирает" DLLку и потом сам на себя же и ругается....