| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2591 人关注过本帖
标题:VFP编译DLL,内部各Function相互引用的问题
只看楼主 加入收藏
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:995
专家分:4966
注 册:2013-2-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
VFP编译DLL,内部各Function相互引用的问题
先举一个简单的示例,代码如下:
程序代码:
DEFINE CLASS mycls22 AS Session OLEPUBLIC
    PROCEDURE SqMax(ii1 as Double ,ii2 as Double) as Double
    * 取出两个参数中,较大的一个再平方 ,本过程要调用GetMax()
        LOCAL rlt as Double
        rlt = 0 
        rlt = GetMax(ii1 ,ii2)
        RETURN rlt * rlt 
    ENDPROC

    PROCEDURE GetMax(ii1 as Double ,ii2 as Double) as Double
    * 取出两个参数中,较大的一个
        IF ii1>ii2 THEN 
            RETURN ii1
        ELSE 
            RETURN ii2        
        ENDIF 
    ENDPROC

ENDDEFINE

这是一个很简单的代码, 定义了2个简单的过程,GetMax()返回两参数中的最大值,SqMax()则引用GetMax()返回的结果,并将结果再平方。
当然,这2个过程非常简单,我们这里举例只是为了说明问题,说明我们即将遇到的困扰。
如果以上代码不用 DEFINE CLASS ... ENDDEFINE 包裹,只是简单的存为PRG文件,那么 GetMax(2,4)将返回4;SqMax(2,4)将返回4的平方16,一切正常。
但是,一旦把上述代码编译为DLL文件后(编译的过程一切正常),将得到以下结果?
 SET PROCEDURE TO  "d:\fttp\proj1cls.dll"

 ox=CREATEOBJECT('proj1cls.mycls22')
?ox.GetMax(2,4)  &&  返回4,结果正常 
?ox.SqMax(2,4)  &&  出错,结果不正常 

出错图片:
图片附件: 游客没有浏览图片的权限,请 登录注册

=============================================
所以,我的问题是 为什么在prg文件中可以相互引用的过程,编译为DLL后,就不能了呢?有无解决的办法?
搜索更多相关主题的帖子: 编译 返回 结果 DLL Double 
2020-01-15 14:54
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:20 
rlt = this.GetMax(ii1 ,ii2)
2020-01-15 15:07
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:995
专家分:4966
注 册:2013-2-16
收藏
得分:0 
感谢!吹版确实水平高,解决了大问题。
2020-01-15 17:40
hlzcxkj
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2017-9-5
收藏
得分:0 
学习
2020-01-22 16:11
快速回复:VFP编译DLL,内部各Function相互引用的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054006 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved