Почему так много людей хотят избежать C ++ / CLI? Если вам нужно спросить, как использовать P / Invoke, это может быть подсказкой для использования C ++ / CLI.
Что-то вроде следующего в JasonRShaver.h
namespace StackOverflow
{
public ref class JasonRShaver abstract sealed // "abstract sealed" -> "static"
{
public:
static int Generalize(array<array<BYTE>^>^ items) {
int count = items->Length;
std::vector<const BYTE*> arrays(count);
for each (array<BYTE>^ a in items)
{
BYTE* bytes = new BYTE[a->Length];
for (int i=0; i<a->Length; i++)
bytes[i] = a[i];
arrays.push_back(bytes);
}
int retval = ::Generalize(count, &(arrays[0]));
typedef std::vector<const BYTE*>::const_iterator it_t;
for (it_t it = arrays.begin(); it != arrays.end(); ++it)
{
const BYTE* bytes = *it;
delete[] bytes;
}
return retval;
}
};
}
Это не код производственного качества (например, обработка исключений), и вы могли бы сделать еще лучшую работу с pin_ptr<>
и тому подобным. Но вы получите общее представление.