通過動態鏈結庫實現呼叫者不需要重新編譯的情況下被呼叫者的更改可生效
被呼叫者標頭檔案str.h
#ifndef str_h
#define str_h
#include #include using namespace std;
class myclass;//a
// enum;//b
// static string fun(string s1,string s2)
// {
// cout《被呼叫者函式strfun.c
#include "str.h"
string myclass::fun(string s1,string s2)
{ cout《呼叫者函式main.c
#include #include "str.h"
int main(int strc,char* strs)
{ string s1,s2,s3;
s1 = "hello ";
s2 = "world!";
s3 = myclass::fun(s1,s2);
coutg++ -shared -o libstrf.so strfun.o
用來生成動態鏈結庫libstrf.so
g++ -wall -i./ -l./ -lstrf -o main main.c
./main
生成main,執行結果如下:
2hello
2
str.**件中放開b,注釋a
僅編譯鏈結庫
g++ -wall -i./ -c strfun.c
g++ -shared -o libstrf.so strfun.o
./main
執行結果:
4
hello
2
同樣的實驗方式,改為fun在標頭檔案中實現,myclass::fun(s1,s2)結果不會更改,以上。
總結:要想實現「呼叫者不需要重新編譯的情況下被呼叫者的更改可生效」,需要將宣告與實現分離。
C 動態鏈結庫
動態鏈結庫是實現共享函式庫概念的一種方式。擴充套件名為 dll 動態鏈結庫提供了一種方法,使程序可以呼叫不屬於其可執行 的函式。函式的可執行 位於乙個dll檔案中,該dll包含乙個或多個已被編譯,鏈結並與他們的程序分開儲存的函式。dll有助於共享資料和資源,多個應用程式可同時訪問記憶體中的單個dll...
C 動態鏈結庫
動態鏈結庫是實現共享函式庫概念的一種方式。擴充套件名為 dll 動態鏈結庫提供了一種方法,使程序可以呼叫不屬於其可執行 的函式。函式的可執行 位於乙個dll檔案中,該dll包含乙個或多個已被編譯,鏈結並與他們的程序分開儲存的函式。dll有助於共享資料和資源,多個應用程式可同時訪問記憶體中的單個dll...
C 動態鏈結庫
動態鏈結庫英文為dll,是dynamic link library 的縮寫形式,dll 是乙個包含可由多個程式同時使用的 和資料的庫,dll不是可執行檔案。動態鏈結提供了一種方法,使程序可以呼叫不屬於其可執行 的函式。函式的可執行 位於乙個 dll 中,該 dll 包含乙個或多個已被編譯 鏈結並與使...