作者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