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

如何從 C 呼叫 C++ 物件內的 function

缺席
berlin
一般會員


發表:2
回覆:5
積分:1
註冊:2007-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-07-30 17:15:06 IP:220.128.xxx.xxx 訂閱
各位大大, 小弟新手, 請教一個問題.
我有一個 Project 有 .cpp 和 .c 的檔案, 我想要在 .c 的 function 中把一些 data 輸出到 .cpp 中的一個 Memo 中, 請問要如何辦到呢?
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-07-30 17:59:24 IP:203.204.xxx.xxx 訂閱
回到根本問題, 為何一定要在 .c 的 function 中把一些 data 輸出到 .cpp 中的一個 Memo 中 ?
或許有其他解決方法
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-07-30 21:00:17 IP:211.22.xxx.xxx 未訂閱
查一下
#ifdef __cplusplus
extern "C"
{
#endif
// 你的C函數宣告
#ifdef __cplusplus
}
#endif
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-07-31 01:44:27 IP:220.131.xxx.xxx 未訂閱
不對不對。由 C 叫用 C++ 的東西。會有建構子的問題存在。
否則,依它的命名法則。
classname@function.....
這種方法去呼叫。應該可以叫用。
只是它的一些 建構,解構等等。就會出問題了。
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-07-31 10:14:44 IP:211.22.xxx.xxx 未訂閱
報告暗黑大,看提問者的敘述,我覺得他應該是在一個project中將c與c++函式與類別混用發生編譯錯誤!因此提示使用上述方法來提醒c++編譯器將c程式裡面的變數與函數以C的方式來編譯與連結。
===================引 用 暗黑破壞神 文 章===================
不對不對。由 C 叫用 C 的東西。會有建構子的問題存在。
否則,依它的命名法則。
classname@function.....
這種方法去呼叫。應該可以叫用。
只是它的一些 建構,解構等等。就會出問題了。
berlin
一般會員


發表:2
回覆:5
積分:1
註冊:2007-04-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-07-31 10:37:52 IP:220.128.xxx.xxx 訂閱
對不起, 我沒有描述清楚, 我的project 是這樣的:
我有幾個 .c 檔是從別的 project share 過來的, 我必須在 wondows 下, 寫一個視窗程式, 從圖形介面把 request 送到 .c 的function 去處理, C 呼叫 C 的 function call 已經 OK 了, 只要加上 extern "C" ... 的敘述就 OK 了.
麻煩的是, 在 .c 的function 中, 有大量的 debug information 是以 fprintf(stdout, ...) 印出的, 我的想法是, 想找一個方法, 把 fprintf() 的 information 輸出到 Memo, 我可以把 fprintf redefine 成別的 function call, 然後在那個function call 動手腳.
如果沒有辦法直接輸出到 Memo 中的話, 我只好先灌到 file 或 memory, 然後再讀出來了.

Thanks
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-07-31 18:28:03 IP:220.131.xxx.xxx 未訂閱
我知道你的想法。
你是要用原來像是DOS那樣的純C。可是輸出的東西要寫在MFC。。。。。ETC 上面的那些個元件上面。
是不是這樣?
因為原來的C的東西,直接用 printf 就好了。可是現在這樣做不行。

我的想法啦。不知道可不可行啦。
你在C那邊丟 windows message, 基本上,這是 windows api 跟你說的那個 Frame 無關。
如果你可以丟 message 那就可以丟進 Memo 了。只是這樣做會造成閱讀的困難。
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-07-31 18:40:15 IP:211.22.xxx.xxx 未訂閱
如果是這樣,狀況單純一點了,但還是有點小麻煩~
你是用BCB嗎?如果是!Console程式還是可以引用VCL的,將原來的c程式改成副檔名為cpp引用(include)相關VCL(如vcl,Windows,Forms)與表單單元之後,就可輕易得到相關表單上面的元件handle(請注意表單單元的初始化順序),只是你必須逐行將原本dos下的標準輸出函數註解掉!還是有點累!
berlin
一般會員


發表:2
回覆:5
積分:1
註冊:2007-04-24

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-08-01 09:48:10 IP:220.128.xxx.xxx 訂閱
謝謝各位的幫忙, 好像沒有簡單的方法,那我想我還是把資料灌到 memory , 再從 .cpp 那邊取出來, 然後放到 Memo 上.

謝謝各位熱心的回答.
系統時間:2024-05-02 11:20:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!