dll使用全域性變數的疑問

2021-05-22 08:09:11 字數 858 閱讀 7169

這裡先將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)

測試程式一dlltest**

#include "stdafx.h"

#include

#include "windows.h"

#ifdef __cplusplus

extern "c"

#endif

int main(int argc, char* argv)

freelibrary(hlib);

return 0;}

測試程式二dlltest1**

#include

#include "windows.h"

#ifdef __cplusplus

extern "c"

#endif

int main(int argc, char* argv)

freelibrary(hlib);

return 0;}

執行結果如下圖:

左邊圖為dlltest.exe顯示,右邊是dlltest1.exe顯法

我想問的問題是為什麼兩個不同程式dlltest和dlltest1同時呼叫同個lib.dll時,其中的全域性變數的位址一樣,卻值不相同呢??

DLL中匯出全域性變數

ifndef lib h define lib h extern int dllglobalvar endif include lib.h include int dllglobalvar bool apientry dllmain handle hmodule,dword ul reason fo...

全域性變數的使用

什麼是全域性變數呢?我們知道,全域性變數是這樣的變數,他們能夠在這個程式中的任何位置都被使用,也就是說,不管是main函式中,還是我們自己寫出來的函式中,都可以無條件的使用他們,雖然這對於我們看來很是方便,但是他隱含的卻違背了結構化的程式設計思想,所以在我們程式化的設計過程中,應該少用全域性變數。在...

static全域性變數 全域性變數

1 全域性變數 外部變數 的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存方式上並無不同。這兩者的區別在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是...