|
问题如下:
当使用调试版生成的dll则报错,编译版本则没有问题。

调用的火山类中的函数代码,火山生成的C++拿到VS当中调试则没有任何问题

代码如下:
- <火山程序 类型 = "通常" 版本 = 1 />
- 类 区域调用类 <公开>
- {
- 方法 创建区域 <公开 静态 @输出名 = "qy" @视窗.输出 = 真>
- {
- 变量 ss <类型 = ads_name>
- 变量 rt <类型 = 整数>
- rt = 取选择集 ("0", 0, 0, 0, ss)
- // 根据选择集中的对象构建边界曲线的ID数组
- 变量 对象ID数组 <类型 = AcDb对象ID数组>
- 如果 (rt == ADS错误代码.请求成功)
- {
- 变量 长度 <类型 = 整数>
- 取选择集长度 (ss, 取变量地址 (长度)) // 17行有错误
- 变量 计次 <类型 = 整数 值 = 0>
- 循环 (0, 长度, 计次, 1)
- {
- 变量 ent <类型 = ads_name>
- 取选择集实体名称 (ss, 计次, ent)
- 变量 对象ID <类型 = AcDb对象ID>
- 取对象ID (对象ID, ent)
- 对象ID数组.添加 (对象ID)
- }
- }
- 释放选择集资源 (ss)
- 变量 区域ID列表 <类型 = AcDb对象ID数组>
- 区域ID列表 = 区域工具类.添加面域 (对象ID数组) // 这句代码,如果是调试版本则报错,如果是编译版本则没问题
- // 区域工具类.添加面域 (对象ID数组)
- 变量 编号 <类型 = 整数>
- 编号 = 区域ID列表.取成员数 ()
- AcDb格式化输出 ("已经创建%d个面域", 编号)
- }
- #
- }
复制代码 对应调用的函数代码如下:
- <火山程序 类型 = "通常" 版本 = 1 />
- 类 区域工具类 <公开 注释 = "CRegionUtil">
- {
- # //创建面域
- 方法 添加面域 <公开 静态 类型 = AcDb对象ID数组 @输出名 = "kkl">
- 参数 曲线ID <类型 = AcDb对象ID数组>
- {
- 变量 对象ID数组 <类型 = AcDb对象ID数组 注释 = "生成的面域的ID数组">
- 变量 空指针数组 <类型 = AcDb空指针数组 注释 = "指向作为面域边界的曲线的指针的数组">
- 变量 空指针数组2 <类型 = AcDb空指针数组 注释 = "指向创建的面域对象的指针的数组">
- 变量 实体指针 <类型 = AcDb实体指针 注释 = "临时指针,用来关闭边界曲线">
- 变量 区域指针 <类型 = AcDb区域指针 注释 = "临时对象,用来将面域添加到模型空间">
- // 用曲线ID初始化空指针数组
- 变量 计次 <类型 = 整数 值 = 0>
- 循环 (计次, 曲线ID.取成员数 (), 计次, 1)
- {
- 打开数据库实体 (实体指针, 曲线ID.取数组索引 (计次), 打开模式类.kForRead, )
- 如果 (实体指针.是否属于 (AcDb曲线类.描述 ())) // 可能出现问题
- {
- 空指针数组.添加 (实体指针) // 可能出现问题
- }
- }
- 变量 错误 <类型 = 整数>
- 错误 = AcDb区域.根据曲线段创建区域 (空指针数组, 空指针数组2)
- 如果 (错误 == 0)
- {
- // 将生成的面域添加到模型空间
- 变量 计次2 <类型 = 整数 值 = 0 @输出名 = "jc2">
- 循环 (计次2, 空指针数组2.取成员数 (), 计次2, 1)
- {
- 区域指针 = 空指针数组2.取元素 (计次2) // 可能出现问题
- 区域指针.置数据库默认设置 ()
- 变量 区域ID <类型 = AcDb对象ID>
- 变量 数据库指针 <类型 = AcDb数据库指针>
- 区域ID = 实体空间类.添加实体到模型空间 (区域指针, 数据库指针)
- 对象ID数组.添加 (区域ID)
- }
- }
- 否则
- {
- // 如果创建不成功,也要删除已经生成的面域
- 变量 计次3 <类型 = 整数>
- 循环 (计次3, 空指针数组2.取成员数 (), 计次3, 1)
- {
- // 释放内存
- }
- }
- // 关闭作为边界的对象
- 变量 计次4 <类型 = 整数>
- 循环 (计次4, 空指针数组.取成员数 (), 计次4, 1)
- {
- 实体指针 = 空指针数组.取元素 (计次4)
- AcDb对象实体类.关闭 (实体指针)
- }
- 返回 (对象ID数组)
- }
- #
- }
复制代码
|
|