Невозможно привести COM-объект типа "System.__ComObject" к интерфейсному типу...

Автор Тема: Невозможно привести COM-объект типа "System.__ComObject" к интерфейсному типу...  (Прочитано 22498 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Windcastle

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
Точно? x64 на XP - это большая редкость.

Сам был удивлен, когда увидел на виртуальной машине эту операционку поскольку мне не приходилось работать с такой версией )

Потому что активная конфигурация - DEBUG.

Как это исправить?

Или неверный логин, или неверный пароль. Других причин нет.

Проверю только завтра.

Windcastle, Выложи полный проект (в zip-архиве).

Могу только библиотеку выложить сейчас, а весь проект в архиве - только завтра (с работы!). Мне незачем Вам врать, что даже AutoCAD 2016 его воспринимает! Можете проверить и у себя. Но уверяю, весь проект выложу завтра с работы, а dll - выложить сейчас? Есть еще один проект с работы, но там есть кроме нужного кода еще и мусор всякий, но зато он хоть будет потверждением того, что я не соврал! Я запустил dll c папки проекта и AutoCAD 2016 даже слова мне не сказал ))) Могу его выложить!

Оффлайн Windcastle

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
Только что попробовал дома написать тот же самый код на Visual Basic 2012 под Net Framework 4 и мне Visual Studio "кукишь с маслом прописал"!!!

Ну что это такое-то?







Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Откуда ты берёшь (из какого каталога) AutoCAD'овские сборки? Небось из каталога AutoCAD 2016?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Windcastle

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0

Отмечено как Решение Пашин Евгений 24-08-2015, 06:58:37

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
АГА! А в чем подвох?
Подвох в том, что в AutoCAD 2016 acmgd.dll, accoremgd.dll и acdbmgd.dll скомпилированы с .NET 4.5
И соответственно ты не можешь ссылаться на них в проекте, который собирается с .NET 4.0
Ты должен сделать следующее (для версий 2014...2016):
1. Скачать и запустить инсталляцию ObjectARX SDK 2014: http://download.autodesk.com/esd/objectarx/2014/Autodesk_ObjectARX_2014_Win_64_and_32Bit.sfx.exe
2. Ссылаться в своём проекте на AutoCAD'овские .NET библиотеки из ObjectARX SDK (они в каталоге C:\ObjectARX 2014\inc)
3. Использовать в конфигурации проекта .NET 4.0
Если ты не будешь использовать COM/ActiveX, то и будешь использовать конфигурацию Release, то в AutoCAD 2014...2016 x86/x64 твоя сборка должна работать.
Если ты будешь использовать COM/ActiveX (а у тебя именно так), то тебе придётся сделать или два проекта или две конфигурации (одну для x86 и одну для x64).
В них подключаешь Autodesk.AutoCAD.Interop.dll и Autodesk.AutoCAD.Interop.Common.dll из каталога C:\ObjectARX 2014\inc-Win32 или ObjectARX 2014\inc-x64 в зависимости от того, для какой разрядности AutoCAD делаешь сборку.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Посмотрел твой архив и ужаснулся. Мне еще долго придётся приходить в себя. Почему у тебя все AutoCAD'овские сборки оказались в каталоге bin\Debug? Вот и будет у тебя сборка работать только в той версии AutoCAD, из которой эти сборки скопированы. Ты ставил для подключенных сборок AutoCAD CopyLocal в False?
Использование русских имён переменных и имён функций я даже обсуждать не буду - для меня это моветон.

Посмотри эту картинку:

« Последнее редактирование: 23-08-2015, 22:45:49 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Windcastle

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
Если сработает, буду каждый час Вам карму плюсовать пока пальцы не устанут )))

А насчет NET Framework 4.5 уточню... может последний раз и под него скомпилировал... играл с проектом.

P.S. Не понимаю, почему мы сразу с этого не начали... может уже бы проект сдал )))

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Ты ставил для подключенных сборок AutoCAD CopyLocal в False?

Да, пришлось это сделать, потому что не было ясности, в чем проблема, пробовал даже нелепые варианты.

Использование русских имён переменных и имён функций я даже обсуждать не буду - для меня это моветон.

На работоспособность не влияет? Нет. Может мы это оставим как выбор каждого из нас?

Пробую Ваши рекомендации. Сразу отпишусь, как сделаю! Спасибо Вам за подробное описание действий.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Александр, не знаю как отблагодарить! Работает! Так просто всё оказалось, без лишнего шума. Толково объяснили, теперь у меня все сдвинулось с места. Я смогу сдать проект в таком виде (в виде двух библиотек). А теперь можно и вплотную NET AutoCAD будет заняться. У меня руки развязаны. А проект переделать успею под NET!

Боюсь, что я теперь этот форум замучаю вопросами )))


Решением нужно отметить не только текст, но и все изображения!!!

Оффлайн Doublefish

  • ADN Club
  • ****
  • Сообщений: 288
  • Карма: 10
  • AutoCAD Civil 3D
Обрати внимание на следующие моменты:1. Компилировать обязательно в режим Release, а не Debug.2. Версии AutoCAD должны совпадать.3. Разрядность (x86/x64) AutoCAD должна совпадать (это в случае использования COM/Interop как у тебя.)Если хотя бы одно из условий не выполняется - будет ошибка при выполнении.

По поводу п.1 - если debug, то на другом компьютере работать будет если автокад той же версии, проверено на .NET. Или я может что-то не так понял?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Имеется в виду, что на другом компьютере не установлено Visual Studio. Возможно это лишняя перестраховка. Но однозначно для чистого ObjectARX (неуправляемый C++) требуется компиляция в Release, для того чтобы на другом компьютере без Visual Studio этот код загрузился в AutoCAD и заработал.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение