明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1772|回复: 4

[Kean专集] 0,0要怎么写才能适应32和64系统?

[复制链接]
发表于 2015-3-2 09:08:20 | 显示全部楼层 |阅读模式
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系统?





发表于 2015-3-4 16:33:00 | 显示全部楼层
C#多态函数在编译时适配,所以你用32位编译就是int,用64位就是long
只能分别编译成两个不同的dll
发表于 2015-3-9 09:58:05 | 显示全部楼层
用 IntPtr.Zero 可同时适用32位和64位系统。
发表于 2015-3-9 10:59:38 | 显示全部楼层
IntPtr.Zero 好像在高版本才有吧
发表于 2017-12-6 13:25:24 | 显示全部楼层
可以写成   new System.IntPtr(0)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 09:49 , Processed in 0.174755 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表