全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3894
推到 Plurk!
推到 Facebook!

___closure 的問題!VC 6 改寫為BCB 6.0

尚未結案
kipa
一般會員


發表:2
回覆:1
積分:0
註冊:2003-10-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-12-24 14:03:36 IP:114.33.xxx.xxx 訂閱
我手邊有一個廠商的DLL 我要做的是callback的應用
在手冊是這樣定義的

CapModifyCallback( CapContext context, CapCallback* pfnCallback, void* pParam, bool bAdd )

CapCallback :
Declaration
typedef void __cdecl CapCallbackCallback( void* pParam, int iMessage, unsigned long ulParam )

我在VC 6 中
這樣寫就可以使用
在main.h中
[code cpp]
static void busCallback( void* pparam, int iMessage, unsigned long ulParam );
[/code]

在main.cpp中
[code cpp]
CapModifyCallback( Context, busCallback, this, true );

busCallback( void* pparam, int iMessage, unsigned long ulParam )
{
//....
}
[/code]

這樣就可以了 正常執行了

不過在BCB 會有錯誤的訊息
[C Error] Main.cpp(95): E2034 Cannot convert 'void (* (_closure )(void *,int,unsigned long))(void *,int,unsigned long)' to 'void (*)(void *,int,unsigned long)'

_closure 看了一些資料和文件 還是改不出來

我應該從哪裡下手修正?






GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-12-24 15:29:01 IP:203.75.xxx.xxx 未訂閱
是因為用VC6寫的DLL嗎?

參考一下:(VC-BCB 整合系列一) 如何由 BCB 使用 VC 所產生的 LIB 及 DLL

===================引 用 kipa 文 章===================
我手邊有一個廠商的DLL 我要做的是callback的應用
在手冊是這樣定義的.................................43................................

kipa
一般會員


發表:2
回覆:1
積分:0
註冊:2003-10-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-12-24 15:52:18 IP:114.33.xxx.xxx 訂閱
我是透過
coff2omf.exe -lib:
把原廠商提供的LIB轉換
然後把 *.cppp , *.h
加到BCB 因為其他的函式都可以正確使用
只有這個CALLBACK的部份 有問題

看了樓上大大提的的文章還是不知道?

我再來研究一下!!

aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-12-24 18:16:58 IP:210.64.xxx.xxx 訂閱
你好,根據你的錯誤訊息
C Error] Main.cpp(95): E2034 Cannot convert 'void (* (_closure )(void *,int,unsigned long))(void *,int,unsigned long)' to 'void (*)(void *,int,unsigned long)'

我猜是你把函式指標。是不是這樣呢?

比如說放在 TForm1裡的某一個方法,其參數形式是void *,int,unsigned long 。你就把該方法指定給那個函式指標 與 方法指標 的不同!

如果真的是這樣的問題,那麼就要乖乖的把自定函式寫在 類別之外,即當做一般的函式而非方法。
然後再把它指給 你的callback pointer
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2009-12-24 18:22:53, 註解 無‧
aftcast 重新編輯於 2009-12-24 18:25:10, 註解 無‧
aftcast 重新編輯於 2009-12-24 18:26:04, 註解 無‧
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-01-07 11:57:22 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
flylover
一般會員


發表:0
回覆:6
積分:6
註冊:2009-04-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2021-05-12 14:26:38 IP:220.133.xxx.xxx 未訂閱
感謝副站長的回覆,
遇到類似的問題,參考您的方法後就解決了,
將函數的宣告程式放在 Form Class 之外,即解決編譯時出現錯誤的問題。
系統時間:2024-04-27 7:21:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!