Pase la matriz de StringBuilder grabable a C ++ desde C #

Tengo algunas de la biblioteca dinámica C ++ no administrada y la aplicación C # GUI, utilizándola. Necesito pasar una matriz de cadenas con un tamaño conocido a la biblioteca de C ++, que la llena. También hay un valor máximo de longitud de cadena. Estoy tratando de pasar una variedad deStringBuilder con un tamaño adecuado en sí mismo y una capacidad adecuada de elementos internos (también conocido como matriz de buffers).

// C++ library part    
#define MAX_STRING_LENGTH 200
const wchar_t* stringToPopulate = L"Hello, World";

MYDLL_API uint8_t __stdcall getSomeStrings(wchar_t** strings, uint64_t count) {
    for(auto i =0; i < count; ++i){
        // trivial string population
        wcsncpy(*(providers + i), stringToPopulate,
                min(wcslen(stringToPopulate), MAX_STRING_LENGTH ));     
    }
    return 0;
}


// C# application part
[DllImport("myDllName.dll", CallingConvention = CallingConvention.StdCall)]
static extern Byte getSomeStrings(
    [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] StringBuilder[] strings,
    UInt64 size
);

// calling
// create suitable string array
StringBuilder[] stringArrayToPass= new StringBuilder[desirableStringCount];         
for(ulong i =0; i < desirableStringCount; ++i) {
    stringArrayToPass[i] = new StringBuilder(maxStringLength);
}

res = getSomeStrings(stringArrayToPass, desirableStringCount); // exception

TengoSystem.AccessViolationException excepción en la llamada a la API de la biblioteca. ¿Cuál puede ser una razón de tal problema?

Respuestas a la pregunta(1)

Su respuesta a la pregunta