找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 514|回复: 2

[求助]:不知有没有朋友见过这问题,ARX程序中加载Fortran编译的标准动态链接库后造成

[复制链接]
发表于 2005-7-13 10:26:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
以前没发现这个问题,今天在测试我的程序的时候,突然发现,在我的ARX程序中用LoadLibrary()的方式[B]加载了一个FORTRAN PowerStation 4.0编译的标准动态链接库后[/B] ,[B]不调用其中的任何函数[/COLOR][/B],再调用ARX中的一些函数,会出现异常,现象就是所有对0矢量的操作都会造成崩溃。譬如调用AcGeVector3d::normalize(), AcGeVector3d::angleTo()等函数时,不管是调用者本身还是参数中只要有0矢量,就会在这些函数中崩溃。

经过测试,发现不是所有的FORTRAN动态链接库都会存在这个问题,而是如果在FORTRAN程序中如果存在如下子函数

SUBROUTINE PMQ(M0)

  DIMENSION KKKK(M0,8)

END

就会出现上面说的异常。[B]注意,这个子函数仅仅是在函数中定义一个二维数组,其第一维是由传入的参数来确定大小的。[/B]
如果数组定义成如下形式,则没有任何问题: DIMENSION KKKK(1000,8)

初步分析原因应该是在FORTRAN dll 的子程序中动态申请内存的原因造成的
不知道有哪位朋友有过这方面的经验,请赐教!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-7-13 14:55:19 | 显示全部楼层
观注中,在CAD中使用FORTRAN的动态库
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-13 16:53:15 | 显示全部楼层
[B]解决办法:
  1、在ARX程序中避免对0矢量进行操作。
  2、在FORTRAN动态链接库中所有的函数都使用固定大小的数组,数组的大小不由函数参数来确定。
[/B]

我的问题,由于我的ARX程序中有无数地方对矢量进行操作,不能避免其是否是0矢量,如果要对其进行判断,工作量太大。而且不可能通过判断是否为0矢量的方式修改程序,可能造成程序其他地方出现异常。FORTRAN动态链接库也是一个非常成熟的模块,不可能对其中的函数数组声明都进行修改。但有必要得话可以修改


[B]请问有没有朋友碰到过类似的情况,有没有好的解决办法。[/B]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-22 18:24 , Processed in 0.292820 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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