LNK1104 при компиляции...
От: AsM2  
Дата: 01.10.02 06:24
Оценка:
Происходит ошибка при компиляции — 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 (он же при компиляции регестрит).

Буду благодарен за любую помощь!
Заранее спасибо!

WBR, Александр Семёнов
Re: LNK1104 при компиляции...
От: Vi2 Удмуртия http://www.adem.ru
Дата: 01.10.02 09:10
Оценка: 3 (1)
Здравствуйте 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-у же переименовывать!
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[2]: LNK1104 при компиляции...
От: AsM2  
Дата: 01.10.02 09:34
Оценка:
Здравствуйте 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 после компиляции при регестрации, как видно, использут абсолютный путь.

Спасибо!

WBR, Александр Семенов
Re[3]: LNK1104 более того...
От: AsM2  
Дата: 01.10.02 10:04
Оценка:
Здравствуйте AsM2, Вы писали:

AM>Здравствуйте Vi2, Вы писали:


Vi2>>Здравствуйте AsM2, Вы писали:


AM>>>Происходит ошибка при компиляции — COM компилируется в VB 6.0 sp5..., а в последний момент отваливается с ошибкой линкера:


Данная ошибка происходит только если выбрана бинарная совместимость.
Да и если dll занята (используется) VB ругается "Permission denied" перед компиляцией.

Пробовал удалить старую dll и после этого скомпилировать без совместимости — нормально, но как только ставлю бинарную совместимость для этой новой dll — снова не могу скомпилировать — все та же старая ошибка.

Вирусов вроде нет — проверял, да и остальное же нормально работает.
В этом проекте был циклический референс — убрал — не помогло, да и другая dll, участвующая в этом циклическом референсе, компилируется нормально.

На другой машине такая же история — скопировал проект, окомпилил, попытался откомпилить еще с бинарной совместимостью — нету.

Мистика...


WBR, Александр Семенов
Re[3]: Ответ
От: AsM2  
Дата: 01.10.02 10:23
Оценка: 12 (1)
Q166470 (http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q166470&)

Странно, но у них написано что эта проблемма касается VB 5.0
А я еще в инете нашел упоминание о подобной проблемме для VB 6.0sp5

О природе данной ошибке в M$ не распостраняются, а советуют компилировать через... кхм.

WBR, Александр Семенов
Re: LNK1104 при компиляции...
От: BugMan  
Дата: 01.10.02 14:19
Оценка: 2 (1)
Здравствуйте AsM2, Вы писали:

Я тоже с этой проблемой встречался.
Компилировать все DLL надо под 98 — помогает.....
Re[4]: LNK1104 более того...
От: BugMan  
Дата: 01.10.02 15:02
Оценка: 2 (1)
Здравствуйте AsM2, Вы писали:

AM>Пробовал удалить старую dll и после этого скомпилировать без совместимости — нормально, но как только ставлю бинарную совместимость для этой новой dll — снова не могу скомпилировать — все та же старая ошибка.

А вот это уже чисто VBшный приблуд — ничего ты тут не сделаешь.
VB какимто образом сам на себя "запирает" DLLку и потом сам на себя же и ругается....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.