Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共4 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:为什么我在示例的.h中增加了几个参数,DLL运行出现问题,不显示结果

1楼
maodun101 发表于:2020/8/25 13:09:59
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文件也没变,可是不出结果了?请问老师大概是什么问题?
2楼
无为剑 发表于:2020/8/25 15:46:07
系统自带格式请不要更改定义,否则将造成内存访问越界和数据错乱等问题
3楼
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);

4楼
maodun101 发表于:2020/8/25 16:35:23
我明白了
共4 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.03906 s, 2 queries.