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







