推 Keitaro: ....這...我跪了(讚 11/08 02:17
投機一點的做法...
for(int i=0;i<10;i++)
{
wstring name = to_wstring(i)+L".dll";
CreateHardLinkW(name.c_str(), L"MyLib.dll", 0);
HMODULE mod = LoadLibraryW(name.c_str());
printf("%x\n", mod);
}
之後記得FreeLibrary和清掉hard link...
※ 引述《Keitaro (動き出す時間...)》之銘言:
: 開發平台(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.240.172.147
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1446820267.A.312.html