Всем добрый день.
Помогите пожалуйста решить проблемму.
Есть EXE-клиент и DLL-сервер на базе ATL с единственным классом.
В клиенте я вручную регистрирую сервер:
[code]
[\code]
На моей машине все проходит хорошо.
Но когда я запускаю EXE файл на другой машине то функция "DllRegisterServer"
возвращает код ошибки:
hr=0x80040154 ("Class not registered");
В начале на другой машине "MyServer.dll" вообще не хотел загружаться
поскольку отсутствовали библиотеки:
atl.dll и Shlwapi.dll
Может быть класс не регистрируется потому, что я забыл еще что-то скопировать?
Используй Depends.exe (из стандартных средств Visual Studion)
для своего компонента на другой машине, он покажет чего не хватает.
(красным цветом подсветит )
Здравствуйте OlegO, Вы писали:
OO>Используй Depends.exe (из стандартных средств Visual Studion) OO>для своего компонента на другой машине, он покажет чего не хватает. OO>(красным цветом подсветит )
Depends.exe показывает, что све на месте (недостающих файлов нет), а сервер всеравно не регистрируется.
Здравствуйте vb, Вы писали:
vb>Здравствуйте OlegO, Вы писали:
OO>>Используй Depends.exe (из стандартных средств Visual Studion) OO>>для своего компонента на другой машине, он покажет чего не хватает. OO>>(красным цветом подсветит ) vb>Depends.exe показывает, что све на месте (недостающих файлов нет), а сервер всеравно не регистрируется.
а профилирование запускал? или смотрел только то что статически прилинковано?
Здравствуйте Odi$$ey, Вы писали:
OO>>>Используй Depends.exe (из стандартных средств Visual Studion) OO>>>для своего компонента на другой машине, он покажет чего не хватает. OO>>>(красным цветом подсветит ) vb>>Depends.exe показывает, что све на месте (недостающих файлов нет), а сервер всеравно не регистрируется.
O$>а профилирование запускал? или смотрел только то что статически прилинковано?
Наверняка нет, потому что не знаю что это такое и как им пользоваться.
Подскажите пожалуйста.
Здравствуйте vb, Вы писали:
OO>>>>Используй Depends.exe (из стандартных средств Visual Studion) OO>>>>для своего компонента на другой машине, он покажет чего не хватает. OO>>>>(красным цветом подсветит ) vb>>>Depends.exe показывает, что све на месте (недостающих файлов нет), а сервер всеравно не регистрируется.
O$>>а профилирование запускал? или смотрел только то что статически прилинковано?
Profile->Start Profiling и потом смотри в окошке Module, чего добавилось.
З.Ы. Учти также, что dll не только должна просто быть на той машине, но и еще должна быть доступна через переменную среды PATH
O$>Здравствуйте vb, Вы писали:
OO>>>>>Используй Depends.exe (из стандартных средств Visual Studion) OO>>>>>для своего компонента на другой машине, он покажет чего не хватает. OO>>>>>(красным цветом подсветит ) vb>>>>Depends.exe показывает, что све на месте (недостающих файлов нет), а сервер всеравно не регистрируется.
O$>>>а профилирование запускал? или смотрел только то что статически прилинковано?
Profile->>Start Profiling и потом смотри в окошке Module, чего добавилось.
Что такое "Profile"?
Это Profile.exe поставляемая вместе с VC++ или это
"VisualC++"->Menu->Build->Profile...?
Если это Profile.exe то как для этого консольного приложения вызвать "Start Profiling"?
Если это "VisualC++"->Menu->Build->Profile... то опять же непонятно какие опции выбрать.
И где искать окошко "Module"?
Проститеб я может быть задаю глупые вопросы, просто я впервые сталкиваюсь с Profiling.
Здравствуйте Ivan, Вы писали:
I>Здравствуйте vb, Вы писали:
vb>>Может быть класс не регистрируется потому, что я забыл еще что-то скопировать?
I>а atl.dll зарегистрирован?
Быстрей всего что нет. Спасибо за совет.
Я так понимаю, что я должен вызвать "DllRegisterServer" для atl.dll?
Здравствуйте Ivan, Вы писали:
I>Здравствуйте vb, Вы писали:
vb>>Может быть класс не регистрируется потому, что я забыл еще что-то скопировать?
I>а atl.dll зарегистрирован?
Здравствуйте vb, Вы писали:
I>>а atl.dll зарегистрирован?
vb>Может что-то еще надо регистрировать?
Да, если у тебя это что-то используется во время регистрации. А так, самое верное, у тебя на той машине ATL.DLL нет. Либо положи ее туда и зарегистри, либо перекомпили проект без использования ATL.DLL, тогда код регистратора (которые rgs файлы парсит и выполняет) к тебе статически прилинкуется.
Здравствуйте Sashko, Вы писали:
S>Здравствуйте vb, Вы писали:
I>>>а atl.dll зарегистрирован?
vb>>Может что-то еще надо регистрировать?
S>Да, если у тебя это что-то используется во время регистрации. А так, самое верное, у тебя на той машине ATL.DLL нет. Либо положи ее туда и зарегистри, либо перекомпили проект без использования ATL.DLL, тогда код регистратора (которые rgs файлы парсит и выполняет) к тебе статически прилинкуется.
Большое спасибо за совет. Какраз в этом и была причина. Я перекомпелил проект так,чтоб он не использовал ATL.DLL и все заработало.
Всем большое спасибо,кто откликнулся на мой вопрос.
Всех с наступающим Новым Годом.