西安交通远程教育:李凯学堂|波浪理论|程序化交易|金字塔培训视频|期货软件 > Community > Blog - KA1001:金字塔DLL扩展函数接口在VS2010中的编译指南

来源:百度文库 编辑:九乡新闻网 时间:2024/10/06 02:45:51

KA1001:金字塔DLL扩展函数接口在VS2010中的编译指南

三月2

Written by:李凯学堂
2011/3/2 18:43 

对于熟悉C++的用户来说,可以通过DLL方式,编写函数,然后与金字塔的公式系统交互使用。扩展函数可用于实现系统公式函数不能实现的特殊算法。

DLL公式的典型使用方式,例如:"DLLNAME@FNCNAME"(P1,P2) 引用DLLNAME.DLL的FNCNAME函数,计算参数为P1,P2。

         从金字塔的2.34版后,接口支持逐K线模式调用,增加RUNMODE系统函数,用于告知调用的公式系统本接口的运行模式。

金字塔的公式系统运行模式分序列模式和逐K线模式,序列模式模式整个公式系统解释时只会调用一次本接口,传递和返回序列参数数据到接口,而逐K线模式会在解释时每个K线都调用本接口,传递和返回也都是单值数据。

传统的接口是设计在序列模式下运行的,虽然在逐K线模式下金字塔也可以调用运行传统的接口,但是这是效率很低并且是不稳定的,因此如果需要在逐K线模式下使用接口,请使用此种专用模式。

那么如果需要自己编译DLL,需要在那些步骤呢,下面我就详细列出整个过程:

1、金字塔的安装目录有一个 FmlDevelope.zip 压缩文件,其中包含了完整DLL扩展接口的接口示例,以及在.H头文件里的接口使用信息描述。注意压缩包内的这个接口工程文件是VC++6.0的格式的。

2、解压缩了FmlDevelope.zip以后,在VS2010中打开StockFunc.dsw工程文件,VS2010会提示你需要转换,你选择确认转换,转换完成后的工程文件,如果立即编译的话也可以通过的,不会报错,但是到金字塔下面调用的时候,会出错。原因是接口文件中的类型time_t在金字塔里面是解释成32位的,但是在VS2010里面缺省的是编译成64位的,所以当DLL解释金字塔传递过来的时间时就出现了问题。

3、为了让VS2010把接口中的time_t编译成32位,我们需要在头文件中增加一个预定义宏
#define _USE_32BIT_TIME_T  //使用32位的时间格式
然后再编译就可以和金字塔正常通信了。

Copyright ©2011 李凯学堂