天软金融分析.NET函数大全 > TSL函数 > 第三方交互函数 > 外部交互扩展调用接口

DLL外部函数引入    

  •   TSL语言直接支持对动态库的调用,当然,在金融分析.NET平台上由于安全的原因需要设置后才可以运行,但是我们可以用RDO2等模式来调用本地的动态库函数。
      TSL调用动态库的函数申明基本与PASCAL的申明方式相同。
      例如我们要调用一个Windows的函数GetTickCount,我们可以申明:
      Function GetTickCount():Integer; stdcall; external "kernel32.dll" name "GetTickCount" KeepResident;
      Stdcall是调用方式,对于操作系统库基本是STDCALL,而C++开发的动态库则是CDECL,
      External后是包含动态库名称的常量,也可以包含完整路径(应注意\的转义)
      Name关键字后是动态库中的输出函数名,这个也是必要的,因为TSL语言的函数名是大小写不分的。
      KeepResident关键字是用来描述这个函数调用完是否释放动态库句柄,有KeepResident则会常驻内存。(TSL特有)
      参数申明与返回值均需要用:来指定类型信息
      TSL支持的基础类型有:
      Integer,String, Double,Single,Boolean,Pointer,PChar, Int64
    除Integer,Double,Single,Boolean,Int64,Pointer以外的类型在TSL语言种均以String类型来处理
      如果有变参需要返回值,则在申明中在参数名之前使用Var 来标记
      对于C++等高级语言,有结构体等类型,对于到TSL语言,则均使用String类型来替代,入是输入参数,则组装一个结构体的内存块放在字符串中,如果要返回,则先申明一个足够大小的字符串(例如用SetLength)。
      对于拥有特殊数据类型的函数而言,一般除了直接申明引入以外,一般还会在上层包装一个TSL的函数解决参数组装传递等工作,方便调用。
      目前TSL还无法直接调用C++的引出类。

内容