以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  dll 开发例程FmlDevelope.zip 编译后函数返回的数据不正确  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=9137)

--  作者:kekegeneral
--  发布时间:2011/11/25 16:53:12
--  dll 开发例程FmlDevelope.zip 编译后函数返回的数据不正确

编译环境 winxp + vs2005

金字塔版本:2011(v2.75)

 

 

编译了安装目录下的例程FmlDevelope,发现接口函数返回的数据是错误的,比如"STOCKFUNC@MYMACLOSE"(5)

 

请问是不是接口的数据结构有变化?而例程没有更新造成的?或者其他原因?


--  作者:26327756l
--  发布时间:2011/11/25 17:03:35
--  
等待高手回答
--  作者:金字塔学习者
--  发布时间:2011/11/25 17:16:40
--  
能用C++的在我眼里都是高手~
--  作者:kekegeneral
--  发布时间:2011/11/25 20:29:13
--  

有可能找到问题原因了:一会儿回去试一下

http://www.likai.net.cn/tabid/78/EntryId/23/KA1001-DLL-VS2010.aspx

 

这里是引用李凯学堂发的帖子:

下面我就详细列出整个过程:

1、金字塔的安装目录有一个 FmlDevelope.zip 压缩文件,其中包含了完整DLL扩展接口的接口示例,以及在.H头文件里的接口使用信息描述。注意压缩包内的这个接口工程文件是VC++6.0的格式的。

2、解压缩了FmlDevelope.zip以后,在VS2010中打开StockFunc.dsw工程文件,VS2010会提示你需要转换,你选择确认转换,转换完成后的工程文件,如果立即编译的话也可以通过的,不会报错,但是到金字塔下面调用的时候,会出错。原因是接口文件中的类型time_t在金字塔里面是解释成32位的,但是在VS2010里面缺省的是编译成64位的,所以当DLL解释金字塔传递过来的时间时就出现了问题。

3、为了让VS2010把接口中的time_t编译成32位,我们需要在头文件中增加一个预定义宏
#define _USE_32BIT_TIME_T  //使用32位的时间格式
然后再编译就可以和金字塔正常通信了。


--  作者:sgp111
--  发布时间:2011/12/27 14:08:45
--  
楼主,按4楼的方法你试过能解决问题吗?如果能的话我也下个VS2010去。
--  作者:kekegeneral
--  发布时间:2011/12/31 17:08:02
--  
可以的