搜尋此網誌

2011年6月23日 星期四

使用C++ Builder 來開發 Amibroker 的 Plugin

經過最近的收集資料及測試,終於成功寫出一個基本架構
首先第一步要先使 CBB 建立出來的DLL export function 能夠被 Amibroker 正確識別出來
CBB 與 VC 做出來的DLL 在export function 的 name 有所不同
使用 __cdecl 的 function 在 CBB 會有底線而 VC 沒有
這樣一來Amibroker 無法找到要用的 function name 而無法載入plugin DLL
解決方法是把CBB 的DLL 用 CBB 的 tool  impdef 建立 .def 檔再去修改,把修改後的 def 加入CBB Project 中,就可以做出 有底線跟沒底線 function name

例如:
下指令 impdef plugin3.def plugin3.dll
plugin3.def 內容如下

_Configure  @1

改為

ConFigure = _Configure

就可做出Amibroker 正確識別 export function name
做好之後.如果有新增的 export function ,就要再做一次全部對應的修改
不可以像這樣
_Configure @1
Configure @2
Init = _init
必需全部都改成
ConFigure = _Configure
Init = _init
才會正確對應,否則 Amibroker 還是會捉不到

另外 Amibroker ADK 附的 pluging.h 在 export 的宣告,都要多加 _cdecl
傳入參數方式對應才會正確

1 則留言:

Unknown 提到...

I WILL PAY IF YOU CAN DEVELOP ME
A API WHICH CONNECT AMIBROKER WITH
INTERACTIVE GATEWAY.

I ONLY NEED FOLLOWING FUNCTION
1. GET POSITION SIZE
2. PLACE ORDERS
3. CLOSE ORDERS
4. CANCEL ORDERS
SEND EMAIL TO 999FIX AT GMAIL