Скомпиллированный COM объект не хочет рег-ся на др-х машинах
От: Edik  
Дата: 14.07.08 11:35
Оценка:
Я создал VS2008 СОМ-приложение с использованием ATL без использования MFC.
В настройках прописываю:
Configuration Type: Dynamic Library (.dll)
Use of MFC: Use Standard Windows Libraries
Use of ATL: Static Link to ATL
После этого библиотека компилируется без единой ошибки или предупреждения.
У меня на машине эта библиотека посредством команды regsvr32 myLib.dll успешно регистрируется в системе,
и далее я без всяких проблем с ней работаю.

Проблема заключается в следующем: Когда я пытаюсь зарегистрировать библиотеку на другом компьютере,
вылетает ошибка: "Ошибка при вызове LoadLibrary("myLib.dll") — Приложение не было запущено, поскольку оно некорректно настроено. Повторная установка приложения может решить данную проблему.".

Подскажите пожалуйста, что может причиной этому, и как это исправить?
Re: Скомпиллированный COM объект не хочет рег-ся на др-х маш
От: mager Украина  
Дата: 14.07.08 11:44
Оценка: 3 (1)
Здравствуйте, Edik, Вы писали:

E>Я создал VS2008 СОМ-приложение с использованием ATL без использования MFC.

E>В настройках прописываю:
E>Configuration Type: Dynamic Library (.dll)
E>Use of MFC: Use Standard Windows Libraries
E>Use of ATL: Static Link to ATL
E>После этого библиотека компилируется без единой ошибки или предупреждения.
E>У меня на машине эта библиотека посредством команды regsvr32 myLib.dll успешно регистрируется в системе,
E>и далее я без всяких проблем с ней работаю.

E>Проблема заключается в следующем: Когда я пытаюсь зарегистрировать библиотеку на другом компьютере,

E>вылетает ошибка: "Ошибка при вызове LoadLibrary("myLib.dll") — Приложение не было запущено, поскольку оно некорректно настроено. Повторная установка приложения может решить данную проблему.".

E>Подскажите пожалуйста, что может причиной этому, и как это исправить?


Смотри Project Properties -> C/C++ -> Code generation -> Runtime Library

Ето для Release
У тебя там наверное Multi-threaded DLL (/MDd), а должно быть просто Multi-threaded
Re: Скомпиллированный COM объект не хочет рег-ся на др-х маш
От: Юрий Жмеренецкий ICQ 380412032
Дата: 14.07.08 13:33
Оценка:
Здравствуйте, Edik, Вы писали:
<...>
E>Проблема заключается в следующем: Когда я пытаюсь зарегистрировать библиотеку на другом компьютере,
E>вылетает ошибка: "Ошибка при вызове LoadLibrary("myLib.dll") — Приложение не было запущено, поскольку оно некорректно настроено. Повторная установка приложения может решить данную проблему.".

Возможно отсутствуют некоторые dll(нужно смотреть зависимости в помощью Depends.Exe), либо отсутствует манифест.
Re: Скомпиллированный COM объект не хочет рег-ся на др-х маш
От: Edik  
Дата: 14.07.08 13:51
Оценка:
Спасибо большое всем за ответы!

Заработало ) В моём случае решением оказалось

//Смотри Project Properties -> C/C++ -> Code generation -> Runtime Library
//Ето для Release
//У тебя там наверное Multi-threaded DLL (/MDd), а должно быть просто Multi-threaded
Re[2]: Скомпиллированный COM объект не хочет рег-ся на др-х
От: ant_katcin Россия  
Дата: 18.07.08 17:51
Оценка: 3 (1)
Здравствуйте, Edik, Вы писали:

E>Спасибо большое всем за ответы!


E>Заработало ) В моём случае решением оказалось


E>//Смотри Project Properties -> C/C++ -> Code generation -> Runtime Library

E>//Ето для Release
E>//У тебя там наверное Multi-threaded DLL (/MDd), а должно быть просто Multi-threaded

в данном случае ты просто запихнул Runtime внутрь dll. Это достаточно хорошее решение только если количество библиотек неболее пары штук (runtime в каждой — зачем излишиства?). Поэтому можно просто вместе с библиотеками таскать Microsoft Visual C++ 2008 Redistributable Package ( http://www.microsoft.com/downloads/details.aspx?FamilyID=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&amp;displaylang=en) и регистрировать в инсталлере.

Как вариант можно выбрать и таскать только нужные dll(лежат в ...\Microsoft Visual Studio 9.0\VC\redist\ ).
... << RSDN@Home 1.2.0 alpha 4 rev. 1091>>
Re: Скомпиллированный COM объект не хочет рег-ся на др-х маш
От: max-maxtor Россия www.rsdn.ru
Дата: 19.07.08 13:39
Оценка:
Здравствуйте, Edik, Вы писали:

Это плохо.
Наверное, каких-то библиотек не хватает для полного счастья на другой машине.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.