2016-08-11 8 views
-2

У меня есть файлы dll и exe. Я зарегистрировал эти файлы и создал желаемый экземпляр. В одном случае экземпляр не был создан. Любая другая dll и exe приводит к успешному результату, только эта проблема была проблемой. Когда я в последний раз регистрировал проблемные файлы, экземпляр не создавал, но если проблемные файлы были нерегистрированы, я пытаюсь зарегистрировать файлы, которые дали мне успешный результат, но опять-таки экземпляр не создавался. Код не изменялся, тот же код больше не создает экземпляр, и это кажется мне странным, потому что тот же код может создавать экземпляр перед проблемными файлами регистрации. Я пытаюсь заменить CoCreateInstance для CoGetClassObject с тем же результатом. Ошибка Не удалось выполнить сервер.Ошибка выполнения COM-сервера

Я использую Visual Studio 2010 и CLSCTX_LOCAL_SERVER флаг.

Моя гипотеза заключается в том, что это странное поведение вызвано 64-битной средой и 32-битным COM-объектом. Я пробовал это workaround, но результат тот же Не удалось выполнить сервер. Есть идеи?

EDIT: Я искал интерфейс IID, который используется для COM-объекта, но в реестре это не IID. Возможно ли это для этой ситуации?

+0

Эта проблема неизменно отлаживается с неправильного конца. COM-инфраструктура запустила файл EXE, который вы просили, но прежде чем он сможет получить ссылку на объект, процесс завершен. Неизменяемый с каким-то сбоем, вы получаете код ошибки «не работает». Обычно по глупой причине, но вы не можете узнать, пока не отлаживаете серверный процесс. Если он не принадлежит вам, попросите помощи у программиста, который его написал, отправьте ему небольшой репрограммный проект, демонстрирующий проблему. –

+0

Благодарим за отзыв! Есть ли какой-либо вариант под крышкой ** CoCreateInstance ** и узнать больше о проблеме? – viceriel

ответ

0

Проблема решена. Причина заключалась в том, что что-то удаляло один DLL-файл, и когда я пробовал регистрацию .exe, регистрация была неудачной из-за отсутствия DLL.