我的代码发生了一些奇怪的事情。我正在使用一个应该完美工作的库(来自开源Netgen网格器的nglib)。我可以链接并包含所有内容,但我无法使用此库:
我想要使用的对象是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*)
来解释此异常。
我不知道为什么会发生这种情况。
答案 0 :(得分:5)