что-то странное происходит с моим кодом. Я использую библиотеку, которая должна работать идеально (nglib из открытого Netgen Mesher). Я могу связать и включить все, но я не могу использовать эту библиотеку:
Объект, который я хочу использовать: Ng_Mesh* mesh = Ng_NewMesh ();
Метод Ng_NewMesh ():
DLL_HEADER Ng_Mesh * Ng_NewMesh ()
{
Mesh * mesh = new Mesh;
mesh->AddFaceDescriptor (FaceDescriptor (1, 1, 0, 1));
return (Ng_Mesh*) (void*) mesh;
}
Когда я приезжаю к местным жителям, это выглядит как void**
, обозначающее *mesh
, что является void*
. Это не NULL
, потому что я могу добавлять точки и другие вещи к этому объекту, но с некоторыми функциями я получаю исключение:
System.AccessViolationException
: Попытка чтения или записи в защищенную память. Это часто указывает на то, что другая память повреждена.
в nglib.Ng_GetPoint(Void** , Int32 , Double* )
в ForwardModelingPlugin.CustomMeshVol3D.tesselate(CustomMeshVol3D* )
nglib.Ng_GetPoint
должен иметь в качестве аргументов (Ng_Mesh*, Int32, Double*)
, который объясняет это исключение.
Я не знаю, почему происходит этот кастинг.