1 | ||||||||||||||||
Возвратить object в экспортируемой функции dll24.03.2013, 10:58. Показов 616. Ответов 5
Метки нет (Все метки)
Добрый день.
есть функция в dll, которая использует сторонние tlb (они подключены в h):
Спасибо.
0
|
24.03.2013, 10:58 | |
Ответы с готовыми решениями:
5
Возвратить массив из функции Возвратить массив из функции Возвратить массив из функции Не удается возвратить значение функции |
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
24.03.2013, 12:35 | 2 |
Ну вы попали... Я в C# и всё такое не шарю, но вот тут говорится, что у MSVC есть магический ключик /clr, который без всяких extern "C" заставляет C++-компилятор генерировать managed-объектники, которые C#-код может переваривать без проблем.
0
|
Higher
|
|
24.03.2013, 12:53 | 3 |
Если импортировать через PInvoke, то с не POD-классом у вас ничего не получится(особенно с указателем на абстрактный класс). Можно перегнать класс в структуру(но без всякой виртуальности), либо компилировать как managed код(но это достаточно геморно).
0
|
24.03.2013, 15:53 [ТС] | 5 | |||||
Если использовать сторонние интеропы (те же функции, что и в сторонних dll) в NET они почти всегда возвращают либо object, либо System.__ComObject (либо массивы этих обжектов - [])
Вот и подумал так же сделать: реализовать некоторые функции в C++, в шарпе их вызывать и получать возвраты. Добавлено через 4 минуты нене..только native (unmanaged), только хардкор Добавлено через 5 минут Может быть как-то через
0
|
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
24.03.2013, 17:00 | 6 |
Ммм. Ну можете попробовать. Функции создают где-то в куче объекты Си++, возвращают C#-коду какие-то числа-хендлы, по которым C#-код сможет дёргать нужные объекты. Внутри и Си++-кода какой-то std::map<Handle, Object*>. И сверху C#-обёртку с аналогичными методами и ручной передачей хендла аналогично this. Но как-то это попахивает Хотя...
0
|
24.03.2013, 17:00 | |
24.03.2013, 17:00 | |
Помогаю со студенческими работами здесь
6
Возвратить из функции два значения Как возвратить несколько значений в функции? Как функции возвратить ссылку на объект? Как принять и возвратить массив в другой функции? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |