以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  [求助]我写的这个DLL函数 MIN 咋没有显示呢?  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=9601)

--  作者:oceanjztwind
--  发布时间:2012/1/7 12:51:32
--  [求助]我写的这个DLL函数 MIN 咋没有显示呢?
头文件中建: float funczxz(float a[],int n=10) { float min= a[0]; ??for (int i=0;ia[i]) min=a[i];} ??return min; ??} CPP中: __declspec(dllexport) int WINAPI ZXZ(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 && pData->m_pCalcParam[5].m_nParamStart >= 0 && pData->m_pCalcParam[6].m_nParamStart >= 0 && pData->m_pCalcParam[7].m_nParamStart >= 0 && pData->m_pCalcParam[8].m_nParamStart >= 0 && pData->m_pCalcParam[9].m_nParamStart >= 0) //4个序列都含有效数值 { int nFirst = pData->m_pCalcParam[9].m_nParamStart; //已知返回的序列的第一个有效值位置与第4个序列一致 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; const float* pValue6 = pData->m_pCalcParam[5].m_pfParam; const float* pValue7 = pData->m_pCalcParam[6].m_pfParam; const float* pValue8 = pData->m_pCalcParam[7].m_pfParam; ? ?? ?? ?? ?? ? const float* pValue9 = pData->m_pCalcParam[8].m_pfParam; const float* pValue10 = pData->m_pCalcParam[9].m_pfParam; for( int i = nFirst; i < pData->m_nNumData; i++ ) {? ?? ?float a[] = {pValue1[i],pValue2[i],pValue3[i],pValue4[i],pValue5[i],pValue6[i],pValue7[i],pValue8[i],pValue9[i],pValue10[i] }; pData->m_pResultBuf[i] = funczxz(a,10); } return nFirst; } return -1; } 在金字塔中建公式如下引用此建的DLL公式 但没有数据显示 MA1:=100; MA2:=99; MA3:=88; MA4:=77; MA5:=66; MA6:=55; MA7:=44; MA8:=33; MA9:=22; MA10:=11; Mintest:"STOCKFUNC@ZXZ"(MA1,MA2,MA3,MA4,MA5,MA6,MA7,MA8,MA9,MA10);
--  作者:oceanjztwind
--  发布时间:2012/1/7 12:55:33
--  
晕 咋个都挤在一起了....
--  作者:oceanjztwind
--  发布时间:2012/1/7 13:06:20
--  
上面挤在一起 请朋友们看这里 问题看得清楚一些 http://oceanwindcd.blog.163.com/blog/static/128208247201207154744/
--  作者:admin
--  发布时间:2012/1/7 14:20:04
--  

用IE浏览器发


--  作者:oceanjztwind
--  发布时间:2012/1/7 14:53:06
--  

试下ADMIN说的IE看看:

头文件中建:
float funczxz(float a[],int n=10)
{ float min= a[0];
  for (int i=0;i<n;i++)
  { if(min>a[i]) min=a[i];}
  return min;
  }
CPP中:
__declspec(dllexport) int WINAPI ZXZ(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 &&

pData->m_pCalcParam[5].m_nParamStart >= 0 &&

pData->m_pCalcParam[6].m_nParamStart >= 0 &&

pData->m_pCalcParam[7].m_nParamStart >= 0 &&

pData->m_pCalcParam[8].m_nParamStart >= 0 &&

pData->m_pCalcParam[9].m_nParamStart >= 0)
//4个序列都含有效数值

{



int nFirst = pData->m_pCalcParam[9].m_nParamStart;
//已知返回的序列的第一个有效值位置与第4个序列一致

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;

const float* pValue6 = pData->m_pCalcParam[5].m_pfParam;

const float* pValue7 = pData->m_pCalcParam[6].m_pfParam;

const float* pValue8 = pData->m_pCalcParam[7].m_pfParam;
                const float* pValue9 = pData->m_pCalcParam[8].m_pfParam;

const float* pValue10 = pData->m_pCalcParam[9].m_pfParam;





for( int i = nFirst; i < pData->m_nNumData; i++ )

{      float a[] = {pValue1[i],pValue2[i],pValue3[i],pValue4[i],pValue5[i],pValue6[i],pValue7[i],pValue8[i],pValue9[i],pValue10[i] };

pData->m_pResultBuf[i] = funczxz(a,10);



}

return nFirst;

}

return -1;
}

在金字塔中建公式如下引用此建的DLL公式 但没有数据显示
MA1:=100;
MA2:=99;
MA3:=88;
MA4:=77;
MA5:=66;
MA6:=55;
MA7:=44;
MA8:=33;
MA9:=22;
MA10:=11;
Mintest:"STOCKFUNC@ZXZ"(MA1,MA2,MA3,MA4,MA5,MA6,MA7,MA8,MA9,MA10);

 


--  作者:every_ones
--  发布时间:2012/1/9 12:57:29
--  

你先用vc工具depends看看你的stockfunc.dll文件中的xzx是否正确,是c风格函数,如果不是的话在.h中添加zxz的声明,把zxz声明为c风格的。

在其它声明的函数下面添加
__declspec(dllexport) int WINAPI ZXZ(CALCINFO* pData);

--  作者:every_ones
--  发布时间:2012/1/9 13:00:07
--  
@只支持c调用,不支持c++风格函数
[此贴子已经被作者于2012-1-9 13:01:27编辑过]