看板 C_and_CPP 關於我們 聯絡資訊
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
好像是第一次可以回同一個系列回那麼多次... = w = 而且一直繞著 h的話題~~ 我先整理一下好了,dll分靜態和動態連結兩種。 靜態需要.h, .lib 和.dll,而動態需要 .h, .dll好了。 上面所討論的.h.h是不一樣的東西了… = w = .h是裡面定義了FP的type,也就是像 typedef void (WINAPI *ptrFuncFoo)(); 這類的function pointer的type宣告。 而像.h則是長的像這個模樣的…配合.lib, .dll使用 #ifdef ExportDll #define ExportDll __declspec( dllexport ) #else #define ExportDll __declspec( dllimport ) #endif void ExportDll WINAPI foo(); -- 有多少笑語 就有多少哭泣 幸福的背後 總是隱藏著悲劇 -----摘自 趙寧 --找一個字代替-- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.59.242
Bencrie:其實應該叫implicit跟explicit link,兩個都是dynamic 12/25 13:28
Bencrie:linking。static link應該是說object archives那種。 12/25 13:29
QQ29:看了一下請問大家所說的fp是什麼東西呢@@ 12/25 14:24
twotwoone:函數指標 12/25 14:29
aecho:Orz 受教了~~ 12/25 16:33
sunneo:H的話題 (誤 12/25 23:19