#c# #c #marshalling
#c# #c #маршалирование
Вопрос:
У меня есть c-структура, которую я хочу вернуть из c-функции в c #, и эта структура содержит массив int и длину. Итак, в основном
struct MyStruct
{
int *arr;
int size;
}
Как я должен выделить arr в c, чтобы гарантировать, что он может быть освобожден в c #. И как мне украсить соответствующую структуру в c #, чтобы сделать возможным маршалинг?
Комментарии:
1. Для взаимодействия с C # вы используете C, C , C / CLI, C / CX, C с WRL или C / WinRT? Вы используете . NET или Mono? Вы используете Windows, Macintosh или Linux?
2. Я работаю на C #, а вызываемая библиотека — C , но я вызываю только функции в стиле C. Я использую visual studio и .NET standard.
Ответ №1:
Вы не можете. Вы должны выделять и освобождать память с помощью одной и той же библиотеки времени выполнения.
Комментарии:
1. Вы можете выделять память в коде C, использовать ее в C # И освобождать память в коде C (вызывая пользовательскую функцию).
2. Спасибо, тогда, я думаю, мне не нужно искать дальше. Я надеялся, что для структур должно быть что-то вроде SizeParamIndex: learn.microsoft.com/en-us/dotnet/api /…
3. @AndersG Что заставляет вас думать, что SizeParamIndex не работает для структур?
4. Можно ли использовать это для структур? Как?