Re: [問題] class宣告在source file
大家好
前一篇推文我問說 dll兩隻process 一起load起來
是不是會共用
直覺是覺得不會
但我沒任何知識關於這方面
想請問各位有沒有這方面的簡單觀念教學網頁
我測試結果
也是 不會
我測試如下
某export dll的code寫
#define TESTDLL_API __declspec(dllexport)
extern TESTDLL_API void ORZ();
extern TESTDLL_API int nTestDLL;
static int foo = 5566;
void ORZ(){
cout<<"call ORZ "<<foo<<", "<<nTestDLL<<endl;
foo++;
}
想測 global變數和static變數是否共用
結果
測試程式寫如下
HMODULE hGAL;
if (NULL != (hGAL =LoadLibrary(L"TestDLL.dll")))
{
cout<<"load dll successful"<<endl;
}
typedef void(*FUNPTR)(void);
FUNPTR FPTR;
FPTR=(FUNPTR)GetProcAddress(hGAL, "ORZ");
int* qq = (int*)GetProcAddress(hGAL, "nTestDLL");
while(true)
{
Sleep(1000);
(*FPTR)();
cout<<*qq;
(*qq)++;
}
build好後 複製成兩隻exe 分別執行
兩者數值毫無關聯性
請各位告訴我為什麼會這樣....
因為我曾經聽過有某位資深員工說過
windows dll是認名字的
如果名字一模一樣 他就不會再laod一次之類的
但我想這應該是限定同一隻process才會降吧?
觀念不清楚 請教各位
若有相關資訊 煩請給我參考一下
謝謝
※ 引述《chiwa (我是青蛙,不是王子^_^)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: Linux (Android)
: 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
: 問題(Question):
: 在android中,有一個叫 BpAudioFlingerClient 的 class
: 我發現它是宣告跟定義都寫在 IAudioFlingerClient.cpp
: 這個檔案是libmedia.so的一部分
: 假設今天有許多process同時用到libmedia.so
: 對於這些process來說,他們所擁有的 class BpAudioFlingerClient 會是同一個嗎?
: 謝謝大家的回答
: 餵入的資料(Input):
: 預期的正確結果(Expected Output):
: 錯誤結果(Wrong Output):
: 程式碼(Code):(請善用置底文網頁, 記得排版)
: http://ppt.cc/_!VT
: 補充說明(Supplement):
: 發現問的問題自己都看不懂 0.o
: 目前的想法是
: type應該是在compile的時候就決定了,所以跟process應該無關
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.147.15.66
→
12/09 19:16, , 1F
12/09 19:16, 1F
討論串 (同標題文章)