Тема: Using COM win32 dll with ObjectARX 2009 x64.

Мой плагин на основе ObjectARX 2009 x64 использует COM dll, собранную для платформы win32.
Регистрация COM в системе прошла успешно.

Для работы с COM я использую smart-указатели. При вызове метода CreateInstance()у smart-указателя получаю HRESULT "Class not registered".

При этом работа с функциями COM'a без AutoCAD 2009 x64 и плагина в качестве посредника проходит успешно.


В чем причина такого поведения?
Возможно ли устранить проблему не прибегая к пересборке COM для платформы x64?

Re: Using COM win32 dll with ObjectARX 2009 x64.

equilibrium пишет:

При этом работа с функциями COM'a без AutoCAD 2009 x64 и плагина в качестве посредника проходит успешно.

Из 32-разрядного или 64-разрядного приложения?
Не берусь утверждать, т.к. с 64-разрядными приложениями не работал, но помню что для 32-разрядных приложений под 64-разрядной Windows используется отдельная ветвь реестра. Регистрация твоей COM-dll видимо происходит в этой ветке, а из 64-разрядного AutoCAD CreateInstance() ищет в ветке для 64-разрядных приложений.
Мне кажется, что без пересборки для платформы x64 COM работать не будет, но на 100% поручится не могу.

Re: Using COM win32 dll with ObjectARX 2009 x64.

Александр Ривилис пишет:
equilibrium пишет:

При этом работа с функциями COM'a без AutoCAD 2009 x64 и плагина в качестве посредника проходит успешно.


Из 32-разрядного или 64-разрядного приложения?

Dll регистрирует в системе свой протокол для открытия файлов. Я смог открыть файл, набрав его адрес в соответствии с протоколом в командной строке.

Спасибо за подсказки. Скорее всего дела обстоят именно таким образом. К сожалению, сейчас нет возможности пересобрать данную COM-dll для платформы x64.

Re: Using COM win32 dll with ObjectARX 2009 x64.

Возможно, кому-то поможет следующая информация по данной теме:
http://dnjonline.com/article.aspx?ID=jun07_access3264

Сам ещё не запользовал, но судя по частым ссылкам на эту статью, решение работает.