主程式與DLL之間的全域性變數問題

2021-09-05 14:11:35 字數 733 閱讀 9980

有幾個朋友經常向我問題在dll中怎麼共用乙個全域性變數。比如像使用者登陸後的使用者名稱(username)...

其實這個問題很簡單。下面我把我的做法寫出來大家一起分享。

把共享的變數放在主程式裡:username,....等等,

在主程式裡寫兩個函式

function curusername():pchar;

begin

result:=pchar(username);

end;

procedure setcurusername(loginusername: pchar)

begin

username:=loginusername; 

end;

然後在主程式的工程檔案(*.dpr)裡輸出這兩個函式裡寫

.....

exports

curusername, setcurusername;

....

這樣在每個dll裡就可以使用這兩個函式了

function curusername: pchar; //從主程式裡獲取當前登陸帳號

vargetcurusername: function: pchar;

begin

if assigned(getcurusername) then //找到

result := getcurusername

else

result := 'admin';

end;

主程式與DLL之間的全域性變數問題

有幾個朋友經常向我問題在dll中怎麼共用乙個全域性變數。比如像使用者登陸後的使用者名稱 username 其實這個問題很簡單。下面我把我的做法寫出來大家一起分享。把共享的變數放在主程式裡 username,等等,在主程式裡寫兩個函式 function curusername pchar begin ...

動態庫與主程式共享全域性變數

曾經在一次寫程式的時候,全域性使用乙個日誌物件,所有的日誌資訊都由此日誌物件寫入檔案。但是發現在動態鏈結庫裡,無法訪問到該全域性物件,後經查詢資料。發現,動態鏈結庫是否能訪問主程式的全域性變數,主程式是否能訪問動態鏈結庫裡定義的全域性變數都是可以通過鏈結指令改變此行為。主程式訪問動態鏈結庫裡的全域性...

dll使用全域性變數的疑問

這裡先將dll原 奉上 lib.h標頭檔案 ifndef lib h define lib h ifdef cplusplus extern c endif endif lib.cpp include lib.h int dllglobalvar 10 int getglobalvar void 測...