Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
322 / 301 / 173
Регистрация: 16.11.2010
Сообщений: 1,069
Записей в блоге: 9
1

Передать двумерный массив в Си-функцию

19.04.2019, 13:13. Показов 1384. Ответов 1
Метки нет (Все метки)

Всем добра!

У меня есть в Си функция, которая ожидает в качестве первого аргумента двумерный массив (зубчатый):

C++
1
extern "C" __declspec(dllexport) void __cdecl MyFunc(void ** args, int* lens, int len);
В C# я определяю ее так:

C#
1
2
        [DllImport(PATH, CallingConvention = CallingConvention.Cdecl, SetLastError = true)]
        public static extern void MyFunc(IntPtr[][] stubs, int[] sgns,  int sz);
Но при вызове на ней

C#
1
2
3
IntPtr[][] args = ...
int[] lens = stubs.Select(ars => ars.Length).ToArray();
MyFunc(args , lens , args.Length); //<- здесь ошибка
получаю ошибку:
Невозможно упаковать "parameter #1": Упаковка вложенных массивов не поддерживается.
При этом с одномерными массивами все работает

Поиск по этой ошибке ведет себя скромно и решения не дает. Кто-нибудь сталкивался с подобной ситуацией?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.04.2019, 13:13
Ответы с готовыми решениями:

Как передать двумерный массив в функцию
Есть двумерный сассив: int Graph = new int; Есть функция, принимающая двумерный массив:...

Передать двумерный массив в функцию
Доброе утро! Подскажите пожалуйста как можно передать двумерный массив из функции в main(). к...

Двумерный массив передать в функцию
Помогите переделать, нужно двухмерный массив передавать у функцию. #define _CRT_SECURE_NO_WARNINGS...

Передать двумерный массив в функцию
подскажи те как передать двумерный массив в функцию?)

1
1122 / 851 / 394
Регистрация: 30.10.2017
Сообщений: 2,382
21.04.2019, 15:57 2
netBool, функции в C/C++ не поддерживают передачу массивов по значению. Я не уверен в том, как это должно правильно работать в связке с C#, но попробуйте так:

C#
1
public static extern void MyFunc(ref IntPtr[][] stubs, ref int[] sgns,  int sz);
Добавлено через 11 минут
Или тут еще посмотрите.

Передача в функцию указателя на указатель
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.04.2019, 15:57

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Двумерный массив передать в функцию
Нужно просто вывести двумерный массив с помощью функций. Вот что я написал: #include &lt;iostream&gt;...

Передать в функцию двумерный массив
void polecln(char *pole,int N,int M) { for (int i = 0; i &lt; 100; i++) { for (int j = 0; j...

Передать двумерный массив указателей в функцию
Здравствуйте) У меня есть класс Tile и структура Room. Примерно они выглядят таким образом: ...

Как передать двумерный массив в функцию?
Добрый день форумчане. Столкнулся с проблемкой. Мелкой)) вообщем мне надо передать двумерный массив...

Как передать в функцию двумерный массив ?
Блин заморочился уже.. Надо передать двумерные массивы в функцию, обработать их там и вернуть .....

Передать в функцию двумерный string массив
Доброго времени суток. Есть указатель на двумерный стринговый массив: string** mas; и ф-я для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.