→ aecho:好像沒回答到問題 = w = 12/24 21:31
→ ledia:.h 還是要吧, 不然你怎麼知道 fp 的 prototype ? 12/24 22:26
推 sunneo:對啊 除非是(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
推 ledia:你還是需要 FP 的 type, 不然要怎麼接呢? 這些他沒給 .h 12/25 09:23
→ ledia:還是得自己定義吧, 是一樣的意思 12/25 09:23
→ aecho:我覺得需要.h和知道FP的type,是兩件事。 12/25 09:42
→ aecho:知道FP的type,會對GetProcAddress()再轉型成應有的type。 12/25 09:43
→ aecho:而有.h,是直接使用.h裡的定義了~~ 12/25 09:44
→ aecho:如果當成一般的pointer來看,GetProcAddress()就像是回傳了 12/25 09:46
→ aecho:void * 這一種pointer回來,而要用的時候再轉型成正確的type 12/25 09:46
推 VictorTom:看起來是兩件事, 其實在這個地方它的用途是一樣的, 12/25 09:53
→ VictorTom:終究你需要知道Func / FP的type, 你get回來才能轉型, 12/25 09:54
→ VictorTom:放.h跟私下溝通好prototype, 意義上其實也滿像了吧@_@" 12/25 09:55
推 ledia:嗯, 問題在於, 再轉形成正確的 type, 這個 type 是什麼? 12/25 10:45
→ ledia:如果你不是從他的 .h 拿, 你也要從手冊裡整理出來弄成很像 12/25 10:46
→ ledia:有一個 .h 裡面定義一堆 prototype 一樣的形式吧 12/25 10:46
→ ledia:這明明就是同一件事呀 XD 12/25 10:46
→ ledia:事實上從手冊裡整理出來是很不好的 coding style 12/25 10:47
→ ledia:今天換一個版本竟然要動到你的 code ?! 這不是很奇怪嗎? 12/25 10:47
→ ledia:要也是置換他給的 header file 就好啦 12/25 10:49
→ aecho:嗯,我想應該是用法有些不一樣吧~~ 12/25 12:33
→ aecho:因為我這邊在用的,轉出的dll,還是要包一個class出來, 12/25 12:33
→ aecho:這個class一開始會LoadLibrary,並且取得需要的FP, 12/25 12:34
→ aecho:不用的時候就FreeLibrary了。 12/25 12:34
→ aecho:而dll的作者和該class的作者通常是同一個吧 XDD 12/25 12:35