| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > C++ to С++ CLI. Миграция на .NET.

C++ to С++ CLI. Миграция на .NET.

Ответ
Поиск в этой теме
Непрочитано 05.07.2013, 15:33
C++ to С++ CLI. Миграция на .NET.
Rizling
 
Регистрация: 27.06.2013
Сообщений: 8

Приветствую уважаемых посетителей форума!
Есть следующая проблема. У организации имеется достаточно большой проект - расширение AutoCAD. Планируется его постепенный перевод на .NET. На данный момент в проекте активно используется COM, к примеру для взаимодействия с БД. Хотелось бы отойти от использования COM заменив его взаимодействием посредством .NET. И вот сейчас изучается возможность перевода существующего нативного С++ кода в управляемый C++\CLI.

Возможно ли это в целом? И в частности - возможно ли это не переходя на .Net-API? Т.е. возможно ли использование управляемого кода с ObjectARX.

На данный момент была предпринята попытка просто пересобрать проект с использованием ключа /CLR и загрузить в AutoCAD - проект собрался нормально только после подключений acdbmgd.dll и acmgd.dll. Без их подключения получалось множество ошибок компиляции в АПИшном файле AutoCADa mdginterop.h. Загрузка в AutoCAD - вызывает ошибку времени выполнения r6033. Её пока победить не удалось. Хоть вродя я уже по всему коду расставил диррективу #pragma unmanaged - ошибка повторяется из раза в раз.

Если кто что посоветует - буду безумно благодарен. Особенно буду признателен за советы о постепенном переводе подобных проектов под .Net.
Просмотров: 9447
 
Непрочитано 09.07.2013, 01:28
#21
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Salt Посмотреть сообщение
Есть ограничение по типу аргументов и возвращаемого значения.
И еще по контексту, т.к. лисп всегда выполняется в контексте документа и соотвественно acedInvoke должна выполнятся именно из этого контекста. Есть еще один недостаток, связанный с достаточно медленной передачей длинного списка аргументов (имеется в виду тысячи элементов). Но в принципе я считаю, что этот способ имеет право на жизнь.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 10.07.2013, 13:15
#22
Rizling


 
Регистрация: 27.06.2013
Сообщений: 8


Цитата:
Сообщение от Salt Посмотреть сообщение
Есть ведь еще один способ взаимодействия .arx и .NET dll - это функции, экспортируемые через acedDefun() в случае ObjectARX и с помощью атрибута [LispFunction] в случае чистого .NET приложения. Иными словами команда автокада, написанная на нативном ObjectARX (а в общем случае любой код, выполняющийся в контексте документа) может запросто вызывать функции из .NET приложения, написанного, скажем, на C#. И наоборот.
Спасибо, я обязательно рассмотрю и этот способ, но сейчас хотелось бы поделиться результатом. Как я уже писал раньше - попытка загрузки через Netload - не удавалась и мне сообщалось об ошибки во время загрузки.

Цитата:
Сообщение от Rizling Посмотреть сообщение
System.IO.FileLoadException: A
dynamic link library (DLL) initialization routine failed. (Exception from
HRESULT: 0x8007045A)
Долго экспериментируя со своим, и с различными другими, пробными и чистыми проектами, я пришел к выводу, что почти любая инициализация в функции DllMain ведет к такому поведению. Но убрав абсолютно все (единственное что осталось - копирование hInstance) из DllMain своего основного проекта я по прежнему получал эту ошибку загрузки. Долго я еще с этим мучился, танцуя с бубном вокруг этого кода, пока не удалил объявление
Код:
[Выделить все]
 #include <afxdllx.h>
которое, собственно, ни чем не использовалось, из файла, где объявлялась и реализовывалась функция DllMain. Ну и все заработало. Чему я несказанно рад! Всем кто мне помогал - большое спасибо, особенно Александр Ривилис!
Rizling вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > C++ to С++ CLI. Миграция на .NET.

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
реализация задачи visual studio2012 (visual basic .net) autocad 2012, oracle11g Anta .NET 32 31.12.2012 07:35
Портирование .Net + lisp приложений для BricsCAD Sleekka LISP 12 25.12.2012 11:41
Extended AutoCAD .Net API hwd .NET 5 22.08.2012 19:38
.Net событие double-click как поймать dvim .NET 7 04.04.2010 15:13