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

看板C_and_CPP作者 (我愛阿蓉)時間16年前 (2009/12/24 19:28), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/6 (看更多)
大家好 今天在試著寫簡單的DLL看怎麼用 目前我是用vc8 開 console專案 Application type選dll 勾選export symbols 然後就開始試著玩看看 產生了.lib .dll和 原來的.h 想問各位 我寫.h檔案 是不是一定要使用 #ifdef __cplusplus extern "C" { 把宣告的函式包起來 在另一個讀dll的程式利用 HMODULE hGAL=LoadLibrary("xxx.dll") GetProcAddress(hGAL,"function_name") <=======這函式讀取某function 問題1 之前卡在一直都無法讀到這函式 原來是沒加上extern"C" 所以C++ compiler會對function name做手腳 導致找不到這function 所以寫dll一定要使用extern"C"來包嗎?? 如果不用extern"C"包 就一定要附上.lib, 不要用GetProcAddress來找函式 以上是我測試所得到的心得但是不知道是不是真的這樣子@@ 問題2 如果dll裡面有寫class 是不是就一定要附上 .lib 才可以利用這class產生instance 有沒有類似問題一的函式可以讀取class嗎??(我想說是不是可以不用給.lib) 因為我同事說他沒給lib也可以new一個class的instance 讓我覺得很怪異.. 我卻一直出現無法解析的外部符號 需要附上lib才可以..... 問題3 我以為作dll就不會產生lib檔案 之前編譯靜態lib 就想成 把cpp轉換成lib 其實lib就是cpp~~ 但是今天做dll 原來會產生.lib檔案 請教各位這lib檔案是紀錄什麼資訊 明明定義的資訊都跑到dll了為什麼還需要lib檔案呢 以上問題有點煩雜 想釐清觀念 謝謝各位~ ps. 另外有看到某個前輩code 有使用interface這關鍵字 行為很像class 這也是跟做DLL有關嗎= = thx -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.147.15.66 ※ 編輯: QQ29 來自: 122.147.15.66 (12/24 19:35) ※ 編輯: QQ29 來自: 122.147.15.66 (12/24 20:10) ※ 編輯: QQ29 來自: 122.147.15.66 (12/24 20:12)
文章代碼(AID): #1BCr1fI8 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BCr1fI8 (C_and_CPP)