以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  指标里面调用了dll,为什么刚开始正常,后来双击一次,就显示解释错误。  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=72355)

--  作者:qq代人发帖
--  发布时间:2014/11/25 14:23:51
--  指标里面调用了dll,为什么刚开始正常,后来双击一次,就显示解释错误。
请教:我指标里面调用了dll,为什么刚开始正常,后来双击一次,指标就不能正常显示了,显示解释错误。
我dll里面只是返回了一个常数,不可能有错误,dll的函数没有任何逻辑,直接返回的常数

图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

--  作者:monarch
--  发布时间:2014/11/25 14:40:30
--  
我补充一下,主K线图下面的两个附图指标就是我那个调用dll的指标DLLT。
第二个附图指标,就是一行红柱子的那个是正常的。第一个附图指标本来也是这样子,但是双击左侧“管理面板”中的其他指标后,在切换会这个DLLT指标,就没显示了,还提示“第5行 错误:解释错误”,其实我第5行是这一句:中轨:=MA(CLOSE,3)/100;  者不可能有错误的。
另外我dll的函数中为了检查错误,现在里面不含任何逻辑,直接给*pData->m_pResultBuf 赋了一个常数值就返回了,不会有错误。我也留意到这是运行在 逐K模式 的。代码也是针对逐K模式来写的

--  作者:王锋
--  发布时间:2014/11/26 13:49:03
--  

出现解析错误,通常都是你的DLL中出现了内存越界,导致异常终止.

建议你还是检查一下你的DLL中,指针的有关操作吧


--  作者:monarch
--  发布时间:2014/11/26 14:10:37
--  
__declspec(dllexport) int DKFUNC(CALCINFO* pData)
{
//运行在逐K模式下

*pData->m_pResultBuf = 88;

return 1;

}

--  作者:monarch
--  发布时间:2014/11/26 14:16:09
--  
__declspec(dllexport) int DKFUNC(CALCINFO* pData)
{
//运行在逐K模式下

*pData->m_pResultBuf = 88;

return 1;

}

这就是其中一个函数的代码,另外一个也是一样的,只是返回的是另一个常数。

我已经把代码简化成这样了,依然是第一个运行指标正常,切换到其他指标,在切回来就不正常。
如果代码有问题的话,那第一次运行就会不正常吧

--  作者:monarch
--  发布时间:2014/11/26 15:03:14
--  
在补充一点,这个现象只出现在指标公式中。
同样的dll用在交易系统中就是正常的

--  作者:王锋
--  发布时间:2014/11/26 16:35:25
--  

这个情况的原因很多的,比如你的代码是不是有什么资源没释放等等.

建议你使用金字塔自带的DLL公式范例,运行不经修改的范例看看能否问题还是出现,使用排除法逐步排查问题


--  作者:monarch
--  发布时间:2014/11/26 17:15:50
--  
软件带的demo    FmlDevelope是针对序列模式来写的,我用的K线模式,demo里只有一段代码,而且还屏蔽了。
我这个工程,除了函数里面的两行代码是我自己改的,然后在头文件里面加了函数的生命。其余都是copy的FmlDevelope,啥都没加,而且我自己写的两行代码也贴出来了
不会存在其他什么资源没释放的原因了
我电脑系统是win8  64位系统,用的是vs2012


--  作者:王锋
--  发布时间:2014/11/26 17:20:45
--  

自带的范例有2种模式的范例,建议你仔细好好从头看看


--  作者:monarch
--  发布时间:2014/11/26 18:54:26
--  
我写的代码都发出来了,就两句话。除了这两行,就头文件加了一个声明,runmode改了一下返回值。啥都没有了
其余都是你们demo代码。

要不你们把我这两句代码整一个k线模式的dll工程吧,然后让客服通过qq发给我。应该不需要超过2分钟工作量吧,也让我对比一下哪里出的问题