作者percyy (serene ice)
看板Trading
标题[问题] 请问各位程式高手
时间Tue Oct 6 20:53:54 2009
群益提供的报价 API 应该是用 C/C++ 写的 32-bit DLL
我则是使用 C# 来写策略程式
API 中有函式需要 callback function
但是他的函式参数只收 long 做为 function pointer 的 type
而 C# 里只有 delegate 顶多转成 IntPtr
我试了几种方法 都没办法成功地让该函式呼叫到 callback function
范例程式码有 VB 与 VC++ 他们使用
VB: 函式名称( AddressOf CallbackFunctionName )
VC++: 函式名称( (long) CallbackFunctionName )
不晓得板上是否有高手处理过该 DLL (SKQuoteLib.dll) 或是类似的问题
我卡在这地方许久 也找不到解决的方式
根据查的一些资讯
这跟 Managed 与 Unmanaged 之间的 P/Invoke 与反向 P/Invoke 有关
可能跟 CLR 的细部处理有关
C/C++ 的 long 是 32-bit
平台:
Vista 64-bit Enterprise
Visual Studio 2008, 专案的 target platform 已改为 x86
先行感谢~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.91.117
1F:→ idleidle:先到XP上试吧 10/06 21:52
2F:→ idleidle:另外,你有问过群x的工程师吗? 10/06 21:57
3F:→ percyy:营业员转述 说资讯部都说在研究中 10/06 23:09
4F:推 richshen:不好意思 那个营业员就是我 明天继续帮你追! 10/06 23:15
5F:→ richshen:还让你到版上问 我好惭愧 哈哈 10/06 23:16
6F:→ percyy:没关系啦^^" 集思广益总是好 工程师应该也很忙~ 10/06 23:18
7F:推 richshen:谢谢啦 我会尽快帮你解决的 10/06 23:23
8F:推 Rudy:群益给的测试程式,成交回报功能有正常吗? 10/06 23:48
9F:→ Rudy:顺便问一下,我发现有一个function,回传很慢,约0.2秒 10/06 23:59
10F:→ Rudy:实际使用,会严重拖慢电脑速度,有人遇到同样情形吗? 10/07 00:00
11F:→ percyy:成交回报? 若是指成交价报价的话 VB测试程式是正常的 10/07 01:32
12F:推 Rudy:那这样群益dll是正常的 10/07 12:45
13F:→ Rudy:接下来就要确定你写的程式是32bit的,用diassembly确认一下 10/07 12:46
14F:→ percyy:我解决了,写 windows form 程式就可以,console 程式不行 10/08 00:58
15F:→ percyy:可能跟 life time 有关吧~! 10/08 00:59
16F:推 Rudy:可以帮我试一下,GetTick那个函数,回传会很慢吗?(约0.2s) 10/08 10:35
17F:→ percyy:我现在卡在RequestTicks耶 TCHAR* 搞不定 老是回覆212 10/08 21:36
18F:→ percyy:所以还没办法用GetTick吧 Orz 10/08 21:37
19F:推 Rudy:我传 "TX00" 10/08 22:44
20F:→ percyy:是String直接不用MarshalAs吗? 我也丢过 "TX00"、"0050" 等 10/08 22:53
21F:→ percyy:都是212 害我怀疑是Stocks.dat的问题? 有时看它被覆写成0KB 10/08 22:54
22F:→ percyy:嗯 看来应该跟Stocks.dat无关 它好像程式关闭後才会被更新 10/08 23:30
23F:→ percyy:我的程式不会正常关闭 最後会有Memory不能为read的错误讯息 10/08 23:31
24F:推 iamkjs:string改成用stringbuilder来接试试看~ 10/12 00:04
25F:→ iamkjs:虽然我没接过群X的API,但我有接过其他C/C++ DLL,也是用C# 10/12 00:05
26F:→ iamkjs:该DLL也是交易用,但不是证券or期权商品,开发过程蒐集很多 10/12 00:06
27F:→ iamkjs:资料,如还有问题,我可以把这些资料share给你参考喔~ 10/12 00:06
28F:→ idleidle:不是证期权?那是外汇吗?那个平台的呢 ^^ 10/12 01:28
29F:→ percyy:StringBuilder sb = new StringBuilder("TX00"); 也不行Orz 10/13 21:05