Correct C# declaration is as follows:
[DllImport("stdmdlbltin.dll")]
public static extern int mdlSurface_project(ref int surfDscrPP, int elDscrP, ref BIM.Point3d point1, ref BIM.Point3d point2, ref BIM.Transform3d pTransform);
If it does not work as well, please post some piece of code where you declare variables and call this method.
Note: when you pass structure by value to C function expecting pointer to structre, it will violate reading access permissions, because where should be a pointer is (in better case) 0 or other 'magic' number and it can not be dereferenced since it does not point to valid memory block of expected size.