Re: [問題] dll 設計的觀念 和一些問題

看板C_and_CPP作者 (n/a)時間16年前 (2010/01/08 22:09), 編輯推噓5(503)
留言8則, 5人參與, 最新討論串2/2 (看更多)
動態連結函式庫(DLL)是為了讓你or其他人在不需要 compile and link的情況下使用你已經寫好的程式。 舉例: // mylib.h #pragma once extern "C" __declspec(dllexport) int myfunc(int x); // mylib.cpp #include "mylib.h" int myfunc(int x) { return x + 1; } 上面的程式碼build完成之後,會產生mylib.lib mylib.dll 任何人,只需要include mylib.h and link mylib.lib 再把mylib.dll放到system32或者跟執行檔同目錄下 這樣子就可以呼叫myfunc這個函數了 ps. link的方法有分動態跟靜態,這就要請別的人講解囉 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.54.110

01/08 23:10, , 1F
我也忘了是哪看到靜態和動態的說法…
01/08 23:10, 1F

01/08 23:11, , 2F
被指正後,應該是implict link和explicit link兩種~~
01/08 23:11, 2F

01/09 01:04, , 3F
好複雜喔還分兩種 可以簡單說用途嗎XD
01/09 01:04, 3F

01/09 01:34, , 4F
應該是一個透過loadLibrary/dlopen,getProcAddr/dlsym
01/09 01:34, 4F

01/09 01:35, , 5F
一個透過header跟unsolved symbol
01/09 01:35, 5F

01/09 01:58, , 6F
如果是class 是不是就不能用getProcAddr 所以只能用靜態?
01/09 01:58, 6F

01/09 13:06, , 7F
Windows 下可以用 COM 阿 @@a
01/09 13:06, 7F

01/10 08:35, , 8F
class的method是可以的,只是他的函數名稱很醜 =w=
01/10 08:35, 8F
文章代碼(AID): #1BHpo3Yf (C_and_CPP)
文章代碼(AID): #1BHpo3Yf (C_and_CPP)