lihezhou 发表于 2015-3-2 09:08:20

0,0要怎么写才能适应32和64系统?

32位系统和64位系统的IntersectWith函数的数据类型不同样的。导致我的DLL不可以在32位系统和64位系统兼容使用。
32位的
Public Overridable Sub IntersectWith(ByVal entityPointer As Autodesk.AutoCAD.DatabaseServices.Entity, ByVal intersectType As Autodesk.AutoCAD.DatabaseServices.Intersect, ByVal projectionPlane As Autodesk.AutoCAD.Geometry.Plane, ByVal points As Autodesk.AutoCAD.Geometry.Point3dCollection, ByVal thisGraphicSystemMarker As Integer, ByVal otherGraphicSystemMarker As Integer)

64位的最后面两个参数数据类型是long
ByVal thisGraphicSystemMarker As long , ByVal otherGraphicSystemMarker As long

我代码写的是:
L1.IntersectWith(L, Intersect.ExtendBoth, IsPt, 0, 0)

0,0要怎么写才能适应32和64系统?





雪山飞狐_lzh 发表于 2015-3-4 16:33:00

C#多态函数在编译时适配,所以你用32位编译就是int,用64位就是long
只能分别编译成两个不同的dll

河伯 发表于 2015-3-9 09:58:05

用 IntPtr.Zero 可同时适用32位和64位系统。

雪山飞狐_lzh 发表于 2015-3-9 10:59:38

IntPtr.Zero 好像在高版本才有吧

魔子幻灭 发表于 2017-12-6 13:25:24

可以写成   new System.IntPtr(0)
页: [1]
查看完整版本: 0,0要怎么写才能适应32和64系统?