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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Передача данных между ObjectARX и NET?

Передача данных между ObjectARX и NET?

Ответ
Поиск в этой теме
Непрочитано 20.01.2013, 13:38 #1
Передача данных между ObjectARX и NET?
Pavlukas
 
Регистрация: 18.01.2010
Сообщений: 16

Столкнулся с проблемой вызова Net-aeyrwbb функции из arx-фала.

Делал так. Создал файл TestFile.arx в котором есть функция
Код:
[Выделить все]
extern "C" _declspec(dllexport) AcDbObjectId 
Test (AcDbObjectId objId)
{
  return objId;
}
Далее создал в C# файл со следующей функцией
Код:
[Выделить все]
[System.Runtime.InteropServices.DllImport("TestFile.arx")]
        public extern static ObjectId Test(ObjectId objId);


public static ObjectId TestC(ObjectId objId)
        {    
                return (ObjectId)Test(objId);
        }
Запускаю приложение и вызываю функцию. Она срабатывает один раз. При повторном вызове выдаёт
FATAL ERROR: Unhandled Access Violation Reading

Данные типа int, double - передаю без проблем, а вот ObjectId и String - не могу.
Чего не то делаю?
Просмотров: 3580
 
Непрочитано 20.01.2013, 14:01
#2
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


интереса ради попробуй заменить
Код:
[Выделить все]
return (ObjectId)Test(objId);
на
Код:
[Выделить все]
return Test(objId) as ObjectId;
и программно проверь возвращаемый функцией TestC результат на равенство null.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 20.01.2013 в 14:48.
hwd вне форума  
 
Непрочитано 20.01.2013, 14:44
#3
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от Pavlukas Посмотреть сообщение
Данные типа int, double - передаю без проблем, а вот ObjectId и String - не могу.
Проверить сейчас неначем, но по "симптомам" похоже на разные CallingConvention.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 20.01.2013, 14:56
#4
Pavlukas


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


Прочитал в MSDN
"can occur when there is only a forward declaration for a type in an MSIL module (compiled with /clr), where the type is referenced in the MSIL module, and where the MSIL module is linked with a native module that has a definition for the type. In this situation, the linker will provide the native type definition in the MSIL metadata, and this may provide for the correct behavior."

Проблему решил с помощью класса AcDbHardPointerId::AcDbStub*

Код:
[Выделить все]
extern "C" _declspec(dllexport) AcDbStub*
Test (AcDbObjectId objId)
{
  return ObjId;
}
Осталось понять, как String вернуть. Пробовал CString и AcString использовать, но не получилось

Последний раз редактировалось Pavlukas, 20.01.2013 в 16:09.
Pavlukas вне форума  
 
Непрочитано 20.01.2013, 18:18
#5
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Посмотри здесь
http://www.theswamp.org/index.php?to...2190#msg342190
Олег (jr.) вне форума  
 
Непрочитано 20.01.2013, 19:31
#6
Александр Ривилис

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


Цитата:
Сообщение от Pavlukas Посмотреть сообщение
Осталось понять, как String вернуть. Пробовал CString и AcString использовать, но не получилось
CString и AcString не получится. Читай http://limbioliong.wordpress.com/201...-from-a-c-api/ (5. Unicode Strings.)
Александр Ривилис вне форума  
 
Непрочитано 21.01.2013, 19:41
#7
Salt

Josser
 
Регистрация: 09.11.2011
Сообщений: 66


COM and .NET Interoperability, Andrew Troelsen, 2002.
В этой книге 1-я глава посвящена PInvoke.
__________________
... пути твои в водах многих, и следы твои не познaются.
Salt вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Передача данных между ObjectARX и NET?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Освоение тел Солнечной системы: Техника, технологии, ресурсы. Солидворкер Разное 4005 14.07.2025 09:13
Передача данных из Excel в контекст текста в Autocad rass AutoCAD 34 19.01.2019 01:20
Простановка рармеров полилинии между указанными точками? Rodiong Программирование 3 16.07.2012 14:32
Структура исходных данных для расчетов методом конечных элементов (МКЭ) Meknotek Расчетные программы 14 02.06.2012 10:10