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后,就不能了呢?有无解决的办法?