[問題] Load dll問題請教
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC2008
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
MFC
問題(Question):
請問是否有辦法load同一個dll檔,load儲存的記憶體位置是不同的?
補充說明(Supplement):
不好意思小弟上來請教一下各位先進關於dll的問題。
我對於dll檔案的觀念不是很清楚,如果問題太過基本還請各位指教。
我接手一個project要改,這個project要去load一個dll檔案來做事。
這個dll是要跟server連線取得資料,要做的工作全部都寫在dll裡面。
原作者將dll的function在project裡面以function pointer來呼叫。
project只是把UI畫出來,當user點選按鈕時判斷事件,
呼叫function pointer,指向dll內部真正實作的function。
現在這project要做的事是希望可以同時連好幾台server(Multi-Server)。
我的想法是如果不要動到這個dll最好,
有沒有辦法重複去load這個dll,放到不同的記憶體位址,
這樣我就可以分別對這些位址去做處理,
甚至把這些function pointer寫一個新的class包起來,
看要連幾台Server就new幾個class object,這樣就完成了。
但是我測試LoadLibrary("XXX.dll")兩次回傳的位址都是一樣的,
所以我猜想這樣做應該是不行的。
請問版上各位先進有沒有更好的作法呢?
感激不盡。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.208.202
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1446654673.A.042.html
推
11/05 00:55, , 1F
11/05 00:55, 1F
→
11/05 00:55, , 2F
11/05 00:55, 2F
感謝您的指點,但我有點不太明白您的意思。
您的意思是說開MultiThread各自去load這個dll嗎?
我對dll不是很懂,用不同的Thread去load同一個dll,記憶體位置會不一樣嗎?
謝謝您的指點!
※ 編輯: Keitaro (111.251.208.202), 11/05/2015 01:57:07
推
11/05 02:16, , 3F
11/05 02:16, 3F
→
11/05 02:16, , 4F
11/05 02:16, 4F
→
11/05 02:17, , 5F
11/05 02:17, 5F
→
11/05 02:19, , 6F
11/05 02:19, 6F
→
11/05 02:19, , 7F
11/05 02:19, 7F
→
11/05 02:19, , 8F
11/05 02:19, 8F
→
11/05 02:21, , 9F
11/05 02:21, 9F
→
11/05 02:22, , 10F
11/05 02:22, 10F
→
11/05 02:23, , 11F
11/05 02:23, 11F
您的意思是說我Load dll後儲存一個變數起來,
然後利用這個變數,開MultiThread去呼叫dll的function是嗎?
但我這dll問題在於,
dll跟Server建立連線後的變數是寫死一個global變數(存在dll裡面)。
這個變數代表跟server連線的Socket。
即使我開MultiThread去對這個dll做存取,
Socket是同一台NVR,這樣做不到Multi-Server的目的了。
再不改動dll的前提下,有更好的作法嗎?
謝謝!
※ 編輯: Keitaro (111.251.218.8), 11/05/2015 06:15:05
推
11/05 08:11, , 12F
11/05 08:11, 12F
推
11/05 17:23, , 13F
11/05 17:23, 13F
→
11/05 17:24, , 14F
11/05 17:24, 14F
→
11/05 17:25, , 15F
11/05 17:25, 15F
推
11/05 21:33, , 16F
11/05 21:33, 16F
→
11/05 21:33, , 17F
11/05 21:33, 17F
→
11/05 21:34, , 18F
11/05 21:34, 18F
非常感謝以上兩位的建言。
今天跟BOSS討論了一下,如果直接改dll我有把握改的出來。
Multi-Process確實可以不改動dll的前提下達成我要的目的,
但是Multi-Process的溝通上我完全沒經驗...由於有deadline限制,我認命直接改dll了...
找時間在來學習一下Multi-Process的作法。
謝謝!
※ 編輯: Keitaro (111.251.218.8), 11/05/2015 21:38:21
→
11/05 21:36, , 19F
11/05 21:36, 19F
→
11/05 21:37, , 20F
11/05 21:37, 20F
→
11/05 21:37, , 21F
11/05 21:37, 21F
推
11/06 09:13, , 22F
11/06 09:13, 22F
→
11/06 09:14, , 23F
11/06 09:14, 23F
→
11/06 09:14, , 24F
11/06 09:14, 24F
推
11/06 21:45, , 25F
11/06 21:45, 25F
推
11/06 23:13, , 26F
11/06 23:13, 26F
討論串 (同標題文章)