欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 为什么我在示例的.h中增加了几个参数,DLL运行出现问题,不显示结果

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2709人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
maodun101
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:11 积分:0 威望:0 精华:0 注册:2020/8/24 9:11:20
为什么我在示例的.h中增加了几个参数,DLL运行出现问题,不显示结果  发帖心情 Post By: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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:2437 积分:0 威望:0 精华:0 注册:2016/3/5 22:53:41
  发帖心情 Post By:2020/8/25 15:46:07 [只看该作者]

系统自带格式请不要更改定义,否则将造成内存访问越界和数据错乱等问题

 回到顶部
帅哥哟,离线,有人找我吗?
maodun101
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:11 积分:0 威望:0 精华:0 注册:2020/8/24 9:11:20
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:11 积分:0 威望:0 精华:0 注册:2020/8/24 9:11:20
  发帖心情 Post By:2020/8/25 16:35:23 [只看该作者]

我明白了

 回到顶部