以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  高级功能研发区  (http://222.73.7.161/bbs/list.asp?boardid=5)
----  为什么我在示例的.h中增加了几个参数,DLL运行出现问题,不显示结果  (http://222.73.7.161/bbs/dispbbs.asp?boardid=5&id=181885)

--  作者:maodun101
--  发布时间:2020/8/25 13:09:59
--  为什么我在示例的.h中增加了几个参数,DLL运行出现问题,不显示结果
typedef struct tagCALCINFO
{
const DWORD m_dwSize; //结构大小
const DWORD m_dwVersion; //调用软件版本(V2.10 : 0x210)
const DWORD m_dwSerial; //调用软件序列号
const char* m_strStkLabel; //股票代码
const BOOL m_bIndex; //大盘

const int m_nNumData; //数据数量(pData,pDataEx,pResultBuf数据数量)
const STKDATA* m_pData; //常规数据,注意:当m_nNumData==0时可能为 NULL
const STKDATAEx* m_pDataEx; //扩展数据,分笔成交买卖盘,注意:可能为 NULL

const int m_nParam1Start; //参数1有效起始位置
const float* m_pfParam1; //调用参数1
const float* m_pfParam2; //调用参数2
const float* m_pfParam3; //调用参数3
const float* m_pfParam4; //调用参数4

//以下是我增加的部分,其他所有都没有变化
const float* m_pfParam5; //调用参数4
const float* m_pfParam6; //调用参数4
const float* m_pfParam7; //调用参数4
const float* m_pfParam8; //调用参数4


.cpp文件也没变,可是不出结果了?请问老师大概是什么问题?

--  作者:无为剑
--  发布时间:2020/8/25 15:46:07
--  
系统自带格式请不要更改定义,否则将造成内存访问越界和数据错乱等问题
--  作者:maodun101
--  发布时间:2020/8/25 15:54:03
--  
请问我要调用多个序列怎么办?按示例 MYBBI(CALCINFO* pData),我只增加了一个序列,也不对?
下面是修改的部分,只增加了一个序列,其他都不变。红色为增加部分。

__declspec(dllexport) int WINAPI MY8MA(CALCINFO* pData)
{
if ( pData->m_pCalcParam[0].m_nParamStart >= 0 &&
pData->m_pCalcParam[1].m_nParamStart >= 0 &&
pData->m_pCalcParam[2].m_nParamStart >= 0 &&
pData->m_pCalcParam[3].m_nParamStart >= 0 &&
pData->m_pCalcParam[4].m_nParamStart >= 0 ) //4个序列都含有效数值
{
//计算返回的序列的第一个有效值位置
int nFirst = pData->m_pCalcParam[4].m_nParamStart; //已知返回的序列的第一个有效值位置与第4个序列一致
//若不知,则
/*
int nFirst = pData->m_pCalcParam[0].m_nParamStart;
if ( nFirst < pData->m_pCalcParam[1].m_nParamStart ) 
nFirst = pData->m_pCalcParam[1].m_nParamStart;
if ( nFirst < pData->m_pCalcParam[2].m_nParamStart ) 
nFirst = pData->m_pCalcParam[2].m_nParamStart;
if ( nFirst < pData->m_pCalcParam[3].m_nParamStart ) 
nFirst = pData->m_pCalcParam[3].m_nParamStart;
 */

const float* pValue1 = pData->m_pCalcParam[0].m_pfParam;
const float* pValue2 = pData->m_pCalcParam[1].m_pfParam;
const float* pValue3 = pData->m_pCalcParam[2].m_pfParam;
const float* pValue4 = pData->m_pCalcParam[3].m_pfParam;
const float* pValue5 = pData->m_pCalcParam[4].m_pfParam;
int nNum = (int)(pData->m_pCalcParam[5].m_fParam); //实际上该例中已知nNum=4,在此用于说明数值参数的用法
for( int i = nFirst; i < pData->m_nNumData; i++ )
{
pData->m_pResultBuf[i] = 
(pValue1[i] + pValue2[i] + pValue3[i] + pValue4[i]+pValue5[i])/nNum;
}
return nFirst;
}
return -1;
}

调用是
MYBBI: "STOCKFUNC@MY8MA"(MA1, MA2, MA3, MA4, MA4,5);


--  作者:maodun101
--  发布时间:2020/8/25 16:35:23
--  
我明白了