Re: [問題] 使用 & 製作 dll的問題

看板C_and_CPP作者 (星空下的鮪魚)時間16年前 (2009/12/25 07:46), 編輯推噓3(3019)
留言22則, 3人參與, 最新討論串3/6 (看更多)
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.115.243.17

12/24 21:31,
好像沒回答到問題 = w =
12/24 21:31

12/24 22:26,
.h 還是要吧, 不然你怎麼知道 fp 的 prototype ?
12/24 22:26

12/25 00:09,
對啊 除非是(X.bin)--->Y.dll 其中Y.dll不公開
12/25 00:09
fp的ptorotype的話,就看文件了,或是和對方約定好prototype。 像手頭上的一個project,就是約定好prototype,而有.h也沒有用。 匯出到.dll的function,.h裡沒有宣告。都只寫在.cpp裡面。 因為原本就設計成需要用動態連結的方式。 -- 或許人生是一段整合內在的自己 並尋求人間一點真情的過程吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.115.243.17

12/25 09:23, , 1F
你還是需要 FP 的 type, 不然要怎麼接呢? 這些他沒給 .h
12/25 09:23, 1F

12/25 09:23, , 2F
還是得自己定義吧, 是一樣的意思
12/25 09:23, 2F

12/25 09:42, , 3F
我覺得需要.h和知道FP的type,是兩件事。
12/25 09:42, 3F

12/25 09:43, , 4F
知道FP的type,會對GetProcAddress()再轉型成應有的type。
12/25 09:43, 4F

12/25 09:44, , 5F
而有.h,是直接使用.h裡的定義了~~
12/25 09:44, 5F

12/25 09:46, , 6F
如果當成一般的pointer來看,GetProcAddress()就像是回傳了
12/25 09:46, 6F

12/25 09:46, , 7F
void * 這一種pointer回來,而要用的時候再轉型成正確的type
12/25 09:46, 7F

12/25 09:53, , 8F
看起來是兩件事, 其實在這個地方它的用途是一樣的,
12/25 09:53, 8F

12/25 09:54, , 9F
終究你需要知道Func / FP的type, 你get回來才能轉型,
12/25 09:54, 9F

12/25 09:55, , 10F
放.h跟私下溝通好prototype, 意義上其實也滿像了吧@_@"
12/25 09:55, 10F

12/25 10:45, , 11F
嗯, 問題在於, 再轉形成正確的 type, 這個 type 是什麼?
12/25 10:45, 11F

12/25 10:46, , 12F
如果你不是從他的 .h 拿, 你也要從手冊裡整理出來弄成很像
12/25 10:46, 12F

12/25 10:46, , 13F
有一個 .h 裡面定義一堆 prototype 一樣的形式吧
12/25 10:46, 13F

12/25 10:46, , 14F
這明明就是同一件事呀 XD
12/25 10:46, 14F

12/25 10:47, , 15F
事實上從手冊裡整理出來是很不好的 coding style
12/25 10:47, 15F

12/25 10:47, , 16F
今天換一個版本竟然要動到你的 code ?! 這不是很奇怪嗎?
12/25 10:47, 16F

12/25 10:49, , 17F
要也是置換他給的 header file 就好啦
12/25 10:49, 17F

12/25 12:33, , 18F
嗯,我想應該是用法有些不一樣吧~~
12/25 12:33, 18F

12/25 12:33, , 19F
因為我這邊在用的,轉出的dll,還是要包一個class出來,
12/25 12:33, 19F

12/25 12:34, , 20F
這個class一開始會LoadLibrary,並且取得需要的FP,
12/25 12:34, 20F

12/25 12:34, , 21F
不用的時候就FreeLibrary了。
12/25 12:34, 21F

12/25 12:35, , 22F
而dll的作者和該class的作者通常是同一個吧 XDD
12/25 12:35, 22F
文章代碼(AID): #1BC_rFvx (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BC_rFvx (C_and_CPP)