Warum scheint es, dass so viele Leute C++/CLI vermeiden wollen? Wenn Sie fragen müssen, wie Sie P/Invoke verwenden, könnte dies ein Hinweis sein, stattdessen C++/CLI zu verwenden.
Etwas nach dem Vorbild der folgenden in 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;
}
};
}
Dies ist nicht serienreifem Code (zB Ausnahmebehandlung), und Sie vielleicht sogar einen besseren Job machen können, mit pin_ptr<>
und dergleichen. Aber Sie bekommen die allgemeine Idee.
Welche Wege haben Sie ausprobiert? –