Передача сложных данных
У препода заскок случился. Ему нужно в WPF вызывать DLL, в которой происходит отрисовка на OpenGL.
Костыль такой: WPF -> Windows Form Host -> DLL(C++) -> OpenGL На костыль пофиг. Как передавать сложные данные в DLL из C# ? Данные типа структур: Код:
Line { |
Ответ: Передача сложных данных
Ну через PInvoke. Там можно же структуры передавать.
Или тебя интересует конкретно как int[3] в структуре передать? |
Ответ: Передача сложных данных
Цитата:
В принципе по Pinvoke много инфы. Разберусь. |
Ответ: Передача сложных данных
Ты не понял мой вопрос про int[3]. Массивы в структурах/классах можно хранить 2 способами - как указатель на какой-то массив (скорее всего в куче), это самый обычный для C# способ:
struct A { public int[] Coordinates; } А можно прямо в структуре: unsafe struct A { public fixed int Coordinates[3]; } То есть в варианте 2 layout у структуры - 3 интежера, а в 1 варианте всего 1 указатель куда-то на массив int[]. Это важно для pinvoke т.к. при передаче структур там тупо память кусками копируется, так что надо чтобы совпадало с нативным вариантом. |
Ответ: Передача сложных данных
А, это довольно таки важно.
|
Ответ: Передача сложных данных
h1dd3n, как пробросить массив такого (C#):
PHP код:
PHP код:
PHP код:
PHP код:
|
Ответ: Передача сложных данных
Что должно делать это:
(sizeof(line) / sizeof(line[0]) ? |
Ответ: Передача сложных данных
Цитата:
Как в примерчике. http://www.cplusplus.com/reference/v...vector/insert/ |
Ответ: Передача сложных данных
Цитата:
http://stackoverflow.com/questions/4...th-of-an-array 1 ответ внимательно читаем. |
Ответ: Передача сложных данных
Цитата:
Еще пришлось в параметр атрибут [In] добавить |
Ответ: Передача сложных данных
Цитата:
Зачем атрибут [In]? |
Ответ: Передача сложных данных
Цитата:
2 - На всякий случай, много примеров нашел еще, где массивы с этими атрибутами передаются или возвращаются. Цитата:
|
Ответ: Передача сложных данных
Вообще лучше всего работать с указателями, то есть 1% кода (того кода который непосредственно имеет отношение к интеропу) пишешь с unsafe модификатором, не трахаешь себе мозг, все работает так как и ожидается. Остальные 99% пишешь на безопасном C#.
|
Ответ: Передача сложных данных
Цитата:
Кстати, все работает, почти. Извращался изрядно. |
Ответ: Передача сложных данных
Это нормально, что из DLL не работают?:
|
Часовой пояс GMT +4, время: 09:04. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot