龙空技术网

C++编写通达信Dll动态库文件

望闻问切 3350

前言:

此刻小伙伴们对“vs2019添加库文件”可能比较注意,同学们都需要学习一些“vs2019添加库文件”的相关资讯。那么小编在网摘上汇集了一些有关“vs2019添加库文件””的相关资讯,希望咱们能喜欢,咱们一起来了解一下吧!

之前都是用MFC写通达信用DLL文件,MFC基本属于被淘汰工具,正好昨天新装VS2019,就试着用VS2019 C++动态库编写通达信用的DLL文件。操作步骤如下:

1.打开VS2019,新建一个项目,项目名称tdxDllTest,,新建项目时选择“动态链接库”,如下图:

选择DLL

项目名称:tdxDllTest

新建的项目

2.在新建项目中添加通达信DLL编程规范中的文件,此例是将规范中三个文件合并成两个,操作见下图:工程项目名称右键---添加---现有项,(需先将规范中实例的文件加入项目中

添加文件

添加头/源文件

3.在PluginTCalcFunc.cpp源文件中修改代码如下图:

添加修改功能函数

函数放入全局数组

4.源代码:

PluginTCalcFunc.h头文件:

#ifndef __PLUGIN_TCALC_FUNC

#define __PLUGIN_TCALC_FUNC

#pragma pack(push,1)

//函数(数据个数,输出,输入a,输入b,输入c)

typedef void(*pPluginFUNC)(int,float*,float*,float*,float*);

typedef struct tagPluginTCalcFuncInfo

{

unsigned short nFuncMark;//函数编号

pPluginFUNC pCallFunc;//函数地址

}PluginTCalcFuncInfo;

typedef BOOL(*pRegisterPluginFUNC)(PluginTCalcFuncInfo**);

//=======================================

#ifdef __cplusplus

extern "C"

{

#endif //__cplusplus

__declspec(dllexport) BOOL RegisterTdxFunc(PluginTCalcFuncInfo** pFun);

#ifdef __cplusplus

}

#endif //__cplusplus

#pragma pack(pop)

#endif

=======================================

PluginTCalcFunc.cpp源文件

#include "pch.h"

#include "PluginTCalcFunc.h"

/*typedef void(*pPluginFUNC)( int DataLen,float* pfOUT,float* pfINa,float* pfINb,float* pfINc)类型指针;

函数参数分别是(数据个数,输出,输入a,输入b,输入c),参数的计算是基于长度为DataLen 的float类型数组。*/

void MA(int DataLen, float* pfOUT, float* pfINa, float* pfINb, float* pfINc)

{//参数1传入收盘价;参数2传入均线周期

int N = int(*pfINb);

float sum;

for (int i = N - 1; i < DataLen; i++)

{

sum = 0;

for (int j = 0; j < N; j++)

sum = sum + pfINa[i - j];

pfOUT[i] = sum / N;

}

}

void TestPlugin2(int DataLen, float* pfOUT, float* pfINa, float* pfINb, float* pfINc)

{

for (int i = 0; i < DataLen; i++)

pfOUT[i] = (pfINa[i] + pfINb[i] + pfINc[i]) / 3;

}

//用户的函数全部都放入PluginTCalcFuncInfo结构的全局数组g_CalcFuncSets中。

PluginTCalcFuncInfo g_CalcFuncSets[] =

{

{ 1,(pPluginFUNC)&MA },

{ 2,(pPluginFUNC)&TestPlugin2 },

{ 0,NULL },

};

//RegisterTdxFunc函数为注册函数

BOOL RegisterTdxFunc(PluginTCalcFuncInfo ** pFun)

{

if (*pFun == NULL)

{

(*pFun) = g_CalcFuncSets;

return TRUE;

}

return FALSE;

}

代码弄好后直接编译,然后在debug或release文件夹中找到tdxDllTest.dll文件,复制粘贴到通达信的X:\new_tdx\T0002\dlls文件夹中,并在公式管理器中绑定Dll,并新建一个测试指标公式,如下图:

通达信测试指标公式

测示结果

至此,C++编写通达信用DLL指标测试完成。

标签: #vs2019添加库文件